C# 当groupbox位于另一个groupbox上时,函数无法找到groupbox
我正在制作的程序需要大量的用户输入。用户选择了一个命令,相应的groupbox变为可见,我保存当前的groupbox供以后使用。如果GroupBox在GUI中没有重叠,下面的代码就可以完美地工作。我想要的是能够将所有的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
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就没有考虑过这个问题:)