|
|
|
Лишнее сообщение ColumnChanged при переходе на другую строку (DataTable в C#)
|
|||
|---|---|---|---|
|
#18+
Есть на форме элемент DevExpress.XtraTreeList.TreeList (или System.Windows.Forms.DataGridView). Заполняем таблицу тестовыми данными: DataTable TableTree = new DataTable(); TableTree.Columns.Add("ID", typeof (int)); TableTree.Columns.Add("Name", typeof(string)); TableTree.Columns.Add("ParentID", typeof(int)); TableTree.Columns.Add("Value", typeof(string)); TableTree.PrimaryKey = new DataColumn[]{TableTree.Columns[0]}; DataRow row_ = TableTree.NewRow(); row_.BeginEdit(); row_["ID"] = 0; row_["ParentID"] = DBNull.Value; row_["Name"] = "Ветвь 1"; row_["Value"] = ""; row_.EndEdit(); TableTree.Rows.Add(row_); row_ = TableTree.NewRow(); row_.BeginEdit(); row_["ID"] = 1; row_["ParentID"] = 0; row_["Name"] = "Ветвь 2"; row_["Value"] = ""; row_.EndEdit(); TableTree.Rows.Add(row_); row_ = TableTree.NewRow(); row_.BeginEdit(); row_["ID"] = 2; row_["ParentID"] = DBNull.Value; row_["Name"] = "Ветвь 3"; row_["Value"] = ""; row_.EndEdit(); TableTree.Rows.Add(row_); Связываем элемент с таблицей и делаем начальные установки: - в случае TreeList: treeListTest.RootValue = DBNull.Value; treeListTest.DataSource = TableTree; treeListTest.ExpandAll(); - в случае DataGridView: dataGridView1.DataSource = TableTree; Связываем поле какого-нибудь текстового элемента со столбцом "Value" таблицы: textBox1.DataBindings.Add("Text", TableTree, "Value", true, DataSourceUpdateMode.OnPropertyChanged); Устанавливаем обрабочики для таблицы: TableTree.ColumnChanged += new DataColumnChangeEventHandler(HandleColumnChangeEventTableTreeData); BindingContext[TableTree].PositionChanged += new EventHandler(TableTree_PositionChanged); void HandleColumnChangeEventTableTreeData(object sender, DataColumnChangeEventArgs e) { } void TableTree_PositionChanged(object sender, EventArgs e) { } В элементе DataGridView или TreeList встаём, например, на вторую строку, и меняем значение в текстовом поле, в результате срабатывает ColumnChanged и попадаем в HandleColumnChangeEventTableTreeData, - всё правильно. Но если теперь просто переместимся на третью строку, то почему-то опять срабатывает ColumnChanged и вновь попадаем в HandleColumnChangeEventTableTreeData, и лишь только потом в TableTree_PositionChanged (срабатывает PositionChanged). Чем вызвано повторное лишнее срабатывание ColumnChanged при переходе на другую строку, и как от этого избавиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2013, 16:10 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=23&tid=1349916]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 396ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...