Winforms .net 3.5 Ультравингрид 9.2
В моем подклассе Ultrawingrid.Ultragrid:
Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
If e.KeyCode = Windows.Forms.Keys.Tab andalso e.control = True then
SetFocusToNextControl(True)
End if
Mybase.OnKeyDown(e)
End Sub
Это прекрасно работает. Но когда сетка перетаскивается на вкладку TabControl, вкладка ctrl сильно отличается от приведенной выше подпрограммы. e.keycode рассматривается как контрольная клавиша {17}
Я понимаю, что по умолчанию cntrl-Tab перемещается между страницами вкладок. Мне нужно изменить это поведение. Я думаю, мне, вероятно, нужен подкласс tabControl, который будет передавать комбинацию клавиш так же, как и форма, но я признаюсь, что не знаю, как это сделать. Я попытался переопределить onkeydown подкласса tabcontrol и просто выдать return, а не базовый вызов onkeydown, если была нажата комбинация ctrl-tab, но, похоже, он также видел e.keycode в качестве клавиши управления.
FWIW Я попробовал другую комбинацию, такую как ctrl-E, и получил почти тот же результат: фокус исчезал из сетки, но никуда не уходил, что я мог обнаружить. Подводная лодка все еще видела e.control как клавишу управления.
Как ни странно, ctrl-X, ctrl-A и т. Д. Работают в сетке, а комбинация ctrl-Delete, которую я добавил в подкласс для удаления строки, работает нормально.
Еще раз - сетка прямо на форме и все работает.
Я определенно выше головы над этим. Руководство очень ценится. vb или C # нормально.
TIA