通过winform循环选项卡

时间:2012-10-25 13:34:15

标签: c# winforms visual-studio tabstop

我有一个应用程序,我有几种形式。它是一个基于C#windows-form的应用程序,用.NET 4.O构建。我有几种用户输入数据的表格。有些网格显示数据,表格上有很多控件。相信我!它是一堆乱七八糟的控件。我必须为每个控件设置TabIndex。我确实禁用了某些控件的TabStop属性,我不希望将其列入其中。然而,仍然一旦我完成了我想要的命令,我就选择了它,并且它可以工作但是一旦它到达最后一个盒子,那么它需要3-4倍的标签才能到达第一个字段。我尝试禁用我不想要的控件的TabStop属性。但我认为可能有某些控件我看不到,但它们可能包含在Tab属性中。 我的问题是,有什么方法可以将winform上所有控件的TabStop属性设置为false,然后将其设置为true以获取我想要仅包含的控件。

如果还有其他方法可以实现,我也愿意接受吗?

如果需要进一步说明,请告诉我们!

我附上了一张符合我想要的图片,然后循环回来,但不知何故它不起作用。另外,表单中还有两个面板,我已将TabStop属性禁用为Falseenter image description here

3 个答案:

答案 0 :(得分:3)

  1. 转到View菜单,然后点击Tab Order。这将激活表单上的选项卡顺序选择模式。 TabIndex值将在每个控件上显示为数字。
  2. 点击控件,以便您需要选项卡。这将为TabIndex控件设置适当的值。
  3. 完成后,转到View菜单并关闭Tab Order
  4. 选择您不想标记的控件并设置TabStop = false

答案 1 :(得分:2)

您应该尝试以下代码:

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

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

ctrlTabStop = false;

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

答案 2 :(得分:2)

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

如果这没有用,那么通过添加Label和Timer来诊断它。像这样编写Tick事件处理程序:

private void timer1_Tick(object sender, EventArgs e) {
    if (this.ActiveControl != null) label1.Text = this.ActiveControl.Name;
}