3

我有一个应用程序,其中有几个表格。它是在 .NET 4.O 中构建的基于 C# Windows 窗体的应用程序。我有几种用户输入数据的表格。有显示数据的网格和表单上的大量控件。相信我!这么多控件的混乱。我必须TabIndex为每个控件设置。我实际上已经禁用了TabStop某些我不想被标记的控件的属性。但是,一旦我完成了我想要的订单,我就会对其进行 TAB,并且它可以工作,但是一旦到达最后一个框,则需要 3-4 倍的选项卡才能到达第一个字段。我尝试禁用TabStop我不想要的控件的属性。但我认为可能有某些我看不到的控件,但它们可能包含在 Tab 属性中。我的问题是,有什么方法可以将TabStopwinform上所有控件的属性设置为false,然后将其设置true为我只想包含的控件。

我也愿意接受是否有其他方法可以实现这一点?

如果需要进一步解释,请告诉我!

我附上了一张图片,这就是我想要的顺序,然后循环回来,但不知何故它不起作用。此外,表单中还有两个面板,我已禁用它们的TabStop属性False在此处输入图像描述

4

3 回答 3

3
  1. 转到View菜单并单击Tab Order。这将激活表单上的选项卡顺序选择模式。TabIndex值将在每个控件上显示为数字。
  2. 单击控件,以便您需要将它们标记为选项卡。这将为TabIndex控件设置适当的值。
  3. 完成后,进入View菜单并关闭Tab Order
  4. 选择您不想被选项卡和设置的控件TabStop = false
于 2012-10-25T15:10:24.637 回答
2

您应该尝试以下代码:

foreach (Control ctrl in this.Controls) 
ctrl.TabStop = false;

您也可以尝试检查最后一个 tabindex。然后转到您的 form.designers.cs 并找到所有具有更大 tabindex 的控件,然后将它们删除:添加

ctrlTabStop = false;

我没有测试任何这些,所以要小心:之前备份你的 *.designer.cs。

于 2012-10-25T13:48:38.420 回答
2

一个简单的解释是,您失去了与另一个重叠的控件下方的控件。或者它位于表格边缘之外。找回它的一个好工具是 View + Other Windows + Document Outline。

如果这没有帮助,那么通过添加标签和计时器来诊断它。像这样编写 Tick 事件处理程序:

private void timer1_Tick(object sender, EventArgs e) {
    if (this.ActiveControl != null) label1.Text = this.ActiveControl.Name;
}
于 2012-10-25T15:44:00.863 回答