#c# #infragistics #ultrawingrid
#c# #инфраструктура #ultrawingrid
Вопрос:
Есть ли какой-либо способ заставить Infragistics Ultragrid не перемещаться ниже строки при нажатии клавиши со стрелкой вправо в последнем столбце?
например, имея таблицу ниже, находясь в ячейке со значением «C» (COL_1, строка 1) — если я нажимаю клавишу со стрелкой вправо, она перемещает меня в строку ниже (значение D), в то время как я хотел бы остаться в той же строке, в той же ячейке (поскольку я достиг «конца» строки)
COL_A | COL_B | COL_C
1 A B C
2 D ...
Ответ №1:
KeyDown
Событие для UltraGrid также может использоваться для реализации этой функциональности:
private void ultraGrid1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Right amp;amp; sender is UltraGrid ug)
{
if ((ug.CurrentState amp; UltraGridState.CellLast) == UltraGridState.CellLast)
e.Handled = true;
}
}
Комментарии:
1. Спасибо — это именно то, что я искал!
Ответ №2:
Навигация в сетке является результатом KyeActionMapping по умолчанию. Что вы можете сделать, это удалить сопоставление справа и добавить новое, предотвращающее такое состояние последней ячейки:
// Get the mappings related to Right key and remove them from KeyActionMappings
var mappings = this.ultraGrid1.KeyActionMappings.GetActionMappings(Keys.Right, 1, 0);
foreach (var mapping in mappings)
{
this.ultraGrid1.KeyActionMappings.Remove(mapping);
}
// Add new KeyActionMappings
this.ultraGrid1.KeyActionMappings.Add(
new GridKeyActionMapping(
Keys.Right,
UltraGridAction.NextCell,
UltraGridState.CellLast,
UltraGridState.Cell,
SpecialKeys.AltCtrl,
0,
true));
Комментарии:
1. Спасибо за ответ — это работает, но только частично — теперь, когда я перехожу к последнему столбцу, а затем нажимаю еще раз клавишу со стрелкой вправо, я фокусирую следующий элемент управления, пока я хочу остановиться в той же ячейке (чтобы я мог нажать стрелку влево, чтобы вернуться назад)