| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Собственная реализация ячейки грида |
| Автор: senalex 17.2.2009, 08:53 | ||
| Всем, привет. Нужно было реализовать свой тип ячейки для грида, все получилось не до конца. При редактировании ячейки все нормально, все редактируется, но при выходе из режима редоктирования ячейка теряет новые данные и возвращает значение, которым она была инициализированна. Шаблоном примера явился код календаря со страницы msdn. вот код, подскажите в чем проблема и что не так я сделал:
|
| Автор: emmanuil 17.2.2009, 10:33 |
| EditingControlValueChanged всегда возвращает false. |
| Автор: senalex 17.2.2009, 13:13 | ||
а как это исправить? |
| Автор: emmanuil 18.2.2009, 05:35 |
| Так как у тебя MyEditingControl наследник TextBox, то переопредели метод OnTextChanged. Там мошешь следить за изменениями в тексте, присвой valueChanged = true. |
| Автор: senalex 18.2.2009, 08:04 |
| emmanuil, спасибо, все получилось. Теперь возникла следующая проблема: Для своей новой колонки я определил свойство, при измеении его значения в proprtygrid'е и нажатии OK, изменения не фиксируются (т.е. значение свойства не изменяется), почему так происходит? |
| Автор: emmanuil 18.2.2009, 08:50 |
| Создай новый топик. Т.е. любые другие свойства фиксируются а именно твое нет? Покажи код. |
| Автор: senalex 18.2.2009, 10:16 | ||
| Да, именно так. вот код, полная реализация моего столбца:
|
| Автор: emmanuil 18.2.2009, 10:21 |
| Так какое свойство не сохраняется? |
| Автор: senalex 18.2.2009, 10:27 |
| Все те, которые мною определены: namespace LovColumn { public class LovColumn : DataGridViewColumn { private int columnText; public int ColumnText { get { return columnText; } set { columnText = value; } } private int columnValue; public int ColumnValue { get { return columnValue; } set { columnValue = value; } } private int[] columnHide; public int[] ColunmHide { get { return columnHide; } set { columnHide = value; } } private string selectCommand; public string SelectCommand { get { return selectCommand; } set { selectCommand = value; } } private string connectionString; public string ConnectionString { get { return connectionString; } set { connectionString = value; } } ...... } |
| Автор: emmanuil 18.2.2009, 10:44 |
| senalex, все фиксируется! Может я просто не понял, что тебе именно нужно или ты не так объяснил? Что конкретно ты хочешь сделать? Как ты узнал, что свойства не фиксируются? |
| Автор: senalex 18.2.2009, 12:07 |
| После радактирования, открываю файл хххх.Designer.cs и вижу это: // // Column1 // this.Column1.ColumnText = 0; this.Column1.ColumnValue = 0; this.Column1.ColunmHide = null; this.Column1.ConnectionString = null; this.Column1.HeaderText = "Column1"; this.Column1.Name = "Column1"; this.Column1.SelectCommand = null; где Column1 объявлен как: private LovColumn.LovColumn Column1; и сколько бы я не редактировал свои свойства, все равно в файле дизайнера вижу это. а вот если редактировать например хедертекст или имя элемента, то изменения сохраняются ( и в файле дизайнера это видно). |
| Автор: emmanuil 19.2.2009, 05:45 | ||
| При реализации наследников нужно переопределить метод Clone. Например так:
|
| Автор: senalex 19.2.2009, 07:50 |
| emmanuil, спасибо, все получилось. |