我有一个DataGridView,我在使用 Tab 键导航时手动管理聚焦单元格。例如,当最后一行中的第一个单元格是可以在DataGridView中导航的最后一个单元格时,我希望在按下 Tab 时,焦点将转到下一个可聚焦控件(一个按钮)。 / p>
SendKeys.Send(“{TAB}”)将无效 - 焦点将转到最后一行的第二个单元格
答案 0 :(得分:7)
如果将StandardTab
属性设置为True,则Tab键的行为将从移动到下一个网格单元格变为移动到窗体上的下一个控件。这可能是你想要的。
如果要控制哪个网格单元/列/行聚焦,那么您可以处理代码中的ProcessDialogKey
和ProcessDataGridViewKey
事件。
答案 1 :(得分:2)
您是否尝试过SelectNextControl方法?
答案 2 :(得分:1)
如Rune Grimstad所说,如果您想要除默认或StandardTab提供的标签之外的任何标签行为,您将必须实现自己的标签行为。
创建一个继承自DataGridView的新类。
protected override bool ProcessDialogKey(Keys keyData)
{
case Keys.Tab | Keys.Shift:
// implement your logic here.
break;
case Keys.Tab:
// implement your logic here.
break;
}
答案 3 :(得分:0)
Control nextControl = this.dataGridView1.Parent.GetNextControl(this.dataGridView1, true);
Control prevControl = this.dataGridView1.Parent.GetNextControl(this.dataGridView1, false);
答案 4 :(得分:0)
您只需使用DataGridView's StandardTab property。
即可dataGridView1.StandardTab = true;
请注意,用户可以使用带有 CTRL + TAB 组合的非StandardTab执行此操作,StandardTab会反转此行为。