C# 通过winform在循环中切换
我有一份申请表,上面有几张表格。它是在.NET4.O中构建的基于C#windows窗体的应用程序。我有几个表单,用户在其中输入数据。表格上有显示数据的网格和大量控件。相信我!这是一个如此多的控制混乱。我必须为每个控件设置C# 通过winform在循环中切换,c#,winforms,visual-studio,tabstop,C#,Winforms,Visual Studio,Tabstop,我有一份申请表,上面有几张表格。它是在.NET4.O中构建的基于C#windows窗体的应用程序。我有几个表单,用户在其中输入数据。表格上有显示数据的网格和大量控件。相信我!这是一个如此多的控制混乱。我必须为每个控件设置选项卡index。我已经禁用了某些控件的TabStop属性,我不想被禁止使用它。然而,一旦我完成了我想要的顺序,我就对它进行制表,它会工作,但是一旦它到达最后一个框,那么需要3-4倍的制表时间才能到达第一个字段。我尝试为我不想要的控件禁用TabStop属性。但我认为可能有某些控件
选项卡index
。我已经禁用了某些控件的TabStop
属性,我不想被禁止使用它。然而,一旦我完成了我想要的顺序,我就对它进行制表,它会工作,但是一旦它到达最后一个框,那么需要3-4倍的制表时间才能到达第一个字段。我尝试为我不想要的控件禁用TabStop
属性。但我认为可能有某些控件我看不到,但它们可能包含在Tab属性中。
我的问题是,是否有任何方法可以将winform上所有控件的TabStop
属性设置为false
,然后将其设置为true
,仅用于我想要包含的控件
我还想知道是否有其他方法可以实现这一点
如果需要进一步解释,请告诉我
我附上了一张照片,这是我想要的顺序,然后循环回来,但不知怎么的,它不起作用。此外,表单中还有两个面板,我已将它们的TabStop
属性禁用为False
。
您应该尝试以下代码:
foreach (Control ctrl in this.Controls)
ctrl.TabStop = false;
您还可以尝试检查最后一个tabindex。然后转到form.designers.cs,找到所有具有更大tabindex的控件,然后删除它们:添加
ctrlTabStop = false;
我没有测试这些,所以要小心:在备份*.designer.cs之前
查看
菜单,然后单击选项卡顺序
。这将激活表单上的选项卡顺序选择模式<代码>选项卡索引值将在每个控件上显示为一个数字TabIndex
设置适当的值查看
菜单并关闭选项卡顺序
TabStop=false
一个简单的解释是,您在另一个控件下面失去了一个控件,该控件与另一个控件重叠。或者位于表单边缘之外。找到它的一个好工具是查看+其他窗口+文档大纲 如果没有帮助,那么通过添加标签和计时器来诊断。按如下方式编写Tick事件处理程序:
private void timer1_Tick(object sender, EventArgs e) {
if (this.ActiveControl != null) label1.Text = this.ActiveControl.Name;
}
这正是我所做的,但在最后一个txtbox之后,它没有循环回第一个txtbox?@C\u looksharp抱歉,没有理解你所说的循环。在执行期间,或在分配制表符索引期间?我的意思是,当您通过控件进行制表时,以及当您到达控件#13,然后要循环回控件#1时,如图所示。@C#U looksharp是的,这是通过控件导航的默认行为