Здравствуйте, <Аноним>, Вы писали:
А>а есть возможность научить грид обрабатывать doubleclick на данных в нём как на самом гриде?
можно поподробнее, какое поведение необходимо получить?
... << RSDN@Home 1.1.4 beta 7 rev. 448>>
Здравствуйте, Peter Fleischer, Вы писали:
PF>SCS wrote:
PF>...
>> PF>для одной строки надо менять Heigth для в соответсвующем объекте
>> из "dataGridRows". если можно, как добраться до этого этого объекта.
PF>...
PF>PF> Private Sub SetRowHeight(ByVal dgrid As DataGrid, ByVal row As Integer, ByVal height As Integer)
PF> Dim dataGridType As Type = dgrid.GetType()
PF> Dim objDataGridRows As Object = dataGridType.InvokeMember("dataGridRows", _
PF> Reflection.BindingFlags.Instance Or Reflection.BindingFlags.GetField Or _
PF> Reflection.BindingFlags.NonPublic, Nothing, dgrid, New Object() {})
PF> Dim dataGridRows As Array = CType(objDataGridRows, Array)
PF> Dim objdataGridRow As Object = dataGridRows.GetValue(row)
PF> Dim dataGridRowType As Type = dataGridType.Assembly.GetType("System.Windows.Forms.DataGridRow")
PF> dataGridRowType.InvokeMember("Height", Reflection.BindingFlags.Instance Or _
PF> Reflection.BindingFlags.SetProperty Or Reflection.BindingFlags.Public, Nothing, _
PF> objdataGridRow, New Object() {height})
PF> End Sub
PF>
В выделенной строке есть небольшая особенность: такой способ не работает для кастомных классов, унаследованных от DataGrid (во всяком случае, у меня не работал
) Лучше его заменить просто на: Dim dataGridType As Type = DataGrid.GetType()
Здравствуйте, <Аноним>, Вы писали:
А>собитые doubleclick приходит только если щелчок был вне области данных.
А>(например на границе ячеек).
А>если же кликнуть на самой ячейке — событие не доходит.
Все правильно, в статье объясняется, что в процессе редактирования в ячейке на самом деле создается некий контрол. Например в случае стиля колонки System.Windows.Forms.DataGridTextBoxColumn, создается соответственно System.Windows.Forms.TextBox. Поэтому и сообщения ловит он. Подписаться на его сообщения очень легко:
dataGridTextBoxColumn1.TextBox.DoubleClick += new EventHandler(TextBox_DoubleClick);
// пропущено
private void TextBox_DoubleClick(object sender, EventArgs e)
{
MessageBox.Show("qwe");
}
... << RSDN@Home 1.1.4 beta 7 rev. 448>>
Здравствуйте, SiAVoL, Beker, Вы писали:
http://www.datagridgirl.com/
Аннотация:
Рассматриваются вопросы, наиболее часто возникающие при использовании класса System.Windows.Forms.DataGrid из .NET Framework Class Library.
Всем привет. Вопрос такой:
Создал стиль DataGridComboBoxColumn как описано в статье. Хотел, чтобы при нажатии на стрелочки вверк/вниз можно было перемещаться по вариантам в комбобоксе, а не переходить в другую ячейку грида. Но события KeyDown/KeyUp/KeyPress в случае нажатия на стрелочки для комбобокса просто не вызываются.
Как можно их перехватить?