我有一个应用程序,我有几种形式。它是一个基于C#windows-form的应用程序,用.NET 4.O构建。我有几种用户输入数据的表格。有些网格显示数据,表格上有很多控件。相信我!它是一堆乱七八糟的控件。我必须为每个控件设置TabIndex
。我确实禁用了某些控件的TabStop
属性,我不希望将其列入其中。然而,仍然一旦我完成了我想要的命令,我就选择了它,并且它可以工作但是一旦它到达最后一个盒子,那么它需要3-4倍的标签才能到达第一个字段。我尝试禁用我不想要的控件的TabStop
属性。但我认为可能有某些控件我看不到,但它们可能包含在Tab属性中。
我的问题是,有什么方法可以将winform上所有控件的TabStop
属性设置为false
,然后将其设置为true
以获取我想要仅包含的控件。
如果还有其他方法可以实现,我也愿意接受吗?
如果需要进一步说明,请告诉我们!
我附上了一张符合我想要的图片,然后循环回来,但不知何故它不起作用。另外,表单中还有两个面板,我已将TabStop
属性禁用为False
。
答案 0 :(得分:3)
View
菜单,然后点击Tab Order
。这将激活表单上的选项卡顺序选择模式。 TabIndex
值将在每个控件上显示为数字。TabIndex
控件设置适当的值。View
菜单并关闭Tab Order
。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;
}