Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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# 当groupbox位于另一个groupbox上时,函数无法找到groupbox_C#_Search_Groupbox - Fatal编程技术网

C# 当groupbox位于另一个groupbox上时,函数无法找到groupbox

C# 当groupbox位于另一个groupbox上时,函数无法找到groupbox,c#,search,groupbox,C#,Search,Groupbox,我正在制作的程序需要大量的用户输入。用户选择了一个命令,相应的groupbox变为可见,我保存当前的groupbox供以后使用。如果GroupBox在GUI中没有重叠,下面的代码就可以完美地工作。我想要的是能够将所有的GroupBox堆叠在一起,这样仍然可以工作 for (int i = 0; i < funcCodes.Length; i++) { byte z = funcCodes[i]; GroupBox gb = (GroupBox)Controls["gbD

我正在制作的程序需要大量的用户输入。用户选择了一个命令,相应的groupbox变为可见,我保存当前的groupbox供以后使用。如果GroupBox在GUI中没有重叠,下面的代码就可以完美地工作。我想要的是能够将所有的GroupBox堆叠在一起,这样仍然可以工作

for (int i = 0; i < funcCodes.Length; i++)
  {
    byte z = funcCodes[i];
    GroupBox gb = (GroupBox)Controls["gbDisplay_FC" + z];
    if (z == zcontrol.getFunctionCode())
    {
        gb.Visible = true;
        currentGB = gb;
    }
    else
        gb.Visible = false;
  }
for(int i=0;i
我得到的失败是当它们被堆叠时,gb变为null(找不到groupbox),感谢对C#非常新的任何帮助

编辑1:
如果您只是使用属性vs拖放更改groupbox的位置,使其成为子项,则下面的注释也同样有效。

然后只需添加一个空复选框即可

for (int i = 0; i < funcCodes.Length; i++)
  {
    byte z = funcCodes[i];
    GroupBox gb = (GroupBox)Controls["gbDisplay_FC" + z];


    if(gb == null)
      continue;


    if (z == zcontrol.getFunctionCode())
    {
        gb.Visible = true;
        currentGB = gb;
    }
    else
        gb.Visible = false;
  }
for(int i=0;i
搜索控件名,然后使用Controls.Find()如下所示:

        Control[] gbs = this.Controls.Find("gbDisplay_FC" + z.ToString(), true);
        if (gbs.Length > 0 && gbs[0] is GroupBox)
        {
            GroupBox gb = (GroupBox)gbs[0];
            // .. do something with "gb" ...
        }

无论groupbox是直接包含在表单中,还是“堆叠”在一起导致它们彼此包含,这都会起作用。

我理解您的意思,但这并不能解决问题,因为它需要在GUI中找到位于另一个groupbox之上的groupbox。检查null是很好的编程实践,我应该已经在代码中有了它。但是正如你所说的,如果找不到它,它就是null。如果它不存在就找不到。那么,如果它不存在,您希望如何找到它呢?:)哦,对不起,我一定没有说清楚。所有的分组框都在表单上。我不应该得到空值,当分组框在表单上紧挨着的时候我不会,但是当我把分组框放在一起的时候我会得到空值。如何将它们添加到表单中?图片是更好的解释。我所拥有的一切都有效。(看看它们是如何挨在一起的)当一个可见而另一个不可见时,我希望它们处于相同的位置。(你看不到另一个groupbox,因为它们彼此重叠。我将其拖到顶部。)仍然有一些问题,但你让我更接近了。我不知道这会让他们被另一个包裹包裹住。谢谢你的帮助!是的…这是一个常见的“错误”。一开始发生了什么并不明显。通常情况下,我们会看到这个问题是通过面板而不是GroupBox提出的。很久以前,bud就没有考虑过这个问题:)