|
Лишнее сообщение 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: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
76ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 272ms |
total: | 451ms |
0 / 0 |