Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过winform在循环中切换_C#_Winforms_Visual Studio_Tabstop - Fatal编程技术网

C# 通过winform在循环中切换

C# 通过winform在循环中切换,c#,winforms,visual-studio,tabstop,C#,Winforms,Visual Studio,Tabstop,我有一份申请表,上面有几张表格。它是在.NET4.O中构建的基于C#windows窗体的应用程序。我有几个表单,用户在其中输入数据。表格上有显示数据的网格和大量控件。相信我!这是一个如此多的控制混乱。我必须为每个控件设置选项卡index。我已经禁用了某些控件的TabStop属性,我不想被禁止使用它。然而,一旦我完成了我想要的顺序,我就对它进行制表,它会工作,但是一旦它到达最后一个框,那么需要3-4倍的制表时间才能到达第一个字段。我尝试为我不想要的控件禁用TabStop属性。但我认为可能有某些控件

我有一份申请表,上面有几张表格。它是在.NET4.O中构建的基于C#windows窗体的应用程序。我有几个表单,用户在其中输入数据。表格上有显示数据的网格和大量控件。相信我!这是一个如此多的控制混乱。我必须为每个控件设置
选项卡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是的,这是通过控件导航的默认行为