2015-03-27 2 views
0

У меня есть DataGridView, и у меня есть 2 редактируемые ячейки. Первая ячейка использует настраиваемый элемент управления, а второй - стандартное текстовое поле.Вручную переместить в следующую ячейку в DataGridView?

Пользовательский элемент управления имеет событие ItemChanged, и это событие возникает, когда пользователь вводит значение в элементе управления.

Как я могу подписаться на это событие и как перейти к следующей редактируемой ячейке?

ответ

0

Вы можете получить доступ к пользовательскому элементу управления в DataGridView «s EditingControlShowing события с помощью e.Control. Здесь пример с DataGridViewTextBoxCell:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    if (e.Control is TextBox) 
    { 
     ((TextBox)e.Control).TextChanged += TextBoxCell_TextChanged; 
    } 
} 
0

По this answer:

private void customControl_ItemChanged(object sender, KeyEventArgs e) 
    { 
      int iColumn = dataGridView1.CurrentCell.ColumnIndex; 
      int iRow = dataGridView1.CurrentCell.RowIndex; 
      if (iColumn == dataGridView1.Columns.Count-1) 
       dataGridView1.CurrentCell = dataGridView1[0, iRow + 1]; 
      else 
       dataGridView1.CurrentCell = dataGridView1[iColumn + 1, iRow]; 
    } 

Вам также нужно добавить строку к методу InitializeComponent() в FormName.Designer.cs, если вы не можете связать это событие с помощью конструктора, что-то вроде :

this.customControl.ItemChanged += new System.EventHandler(this.customControl_ItemChanged); 
+0

Первая часть будет работать. Однако вторая часть не будет работать, потому что datagridview создает экземпляр настраиваемого элемента управления. Это не контроль над формой. –

+0

В какой момент создается пользовательский контроль? Можете ли вы просто добавить строку подписки до конца, где бы вы ни делали создание, или в зависимости от того, какое событие срабатывает после того, как ваше datagridview будет включено? – technophebe

+0

Сам элемент управления реализует 'IDataGridViewEditingControl', и у меня есть 2 дополнительных класса, которые наследуются от' DataGridViewColumn' и 'DataGridViewTextBoxCell'. Создание экземпляра пользовательского элемента управления осуществляется автоматически с помощью DataGridView. –

Смежные вопросы