Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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# 大量的分组框在视觉上堆叠起来,如何更好地组织它们?_C#_Winforms - Fatal编程技术网

C# 大量的分组框在视觉上堆叠起来,如何更好地组织它们?

C# 大量的分组框在视觉上堆叠起来,如何更好地组织它们?,c#,winforms,C#,Winforms,差不多就是这样。我有将近30个分组框要组织,大多数分组框堆叠在一起,只是根据顶部的组合框在视觉上启用或禁用。我知道在Form1.designer.cs中,我可以手动输入它们的位置,但这并没有多大帮助。有没有关于如何最好地使用它的提示?我也试着增加窗户的尺寸,但这还不够 编辑: 我遵循公认的答案 有没有办法移动它们并使它们保持在相对位置? 编辑2:有:只需在更干净的区域创建一个面板,移动并调整面板中所需的GroupBox,然后将面板移动到选项卡中,而不是设置group box的父级,例如,设置面板

差不多就是这样。我有将近30个分组框要组织,大多数分组框堆叠在一起,只是根据顶部的组合框在视觉上启用或禁用。我知道在
Form1.designer.cs
中,我可以手动输入它们的位置,但这并没有多大帮助。有没有关于如何最好地使用它的提示?我也试着增加窗户的尺寸,但这还不够

编辑: 我遵循公认的答案

有没有办法移动它们并使它们保持在相对位置? 编辑2:有:只需在更干净的区域创建一个面板,移动并调整面板中所需的GroupBox,然后将面板移动到选项卡中,而不是设置group box的父级,例如,设置面板的父级

  panel1.Parent = tabPage3;

分组框将位于它们的相对位置:)

您可以使用一个隐藏的
选项卡
控件和足够的页面,并将
分组框
移动到那里

当您的逻辑想要在目标容器(一个选项卡页)上显示其中一个,从您的屏幕截图判断,并隐藏另一个时,您可以执行以下操作:

groupBox2.Parent = yourTargetContainer;  // bring it out of the hidden Tab
groupBox1.Parent = hidden_tabPage1;      // hide it in a page of the hidden Tab
这里的yourTargetContainer是将GroupBox保存在特定位置的容器。GroupBox中的所有控件都将像往常一样与该框一起使用

由于您需要在不同的位置使用它们,因此可以向每个GroupBox添加一个标记,以保持其在TargetContainer上的位置:

groupBox1.Tag = new Point(250, 40);
groupBox2.Tag = new Point(250, 40);
groupBox3.Tag = new Point(250, 90);
// ...
并使用它将其放置在正确的位置:

groupBox2.Parent = yourTargetContainer ;    
groupBox2.Location = (Point)groupBox2.Tag;
这样,您就可以在designer中轻松访问它们,从而可以对它们进行微调。这将有助于确定网格布局的方向


不过,用户是否能够处理这些不断变化的输入控件?它们都有大屏幕吗?

你是在问什么是更好的设计,还是如何在C#Winforms中实现它?我想,前一个问题更适合。两者都没有实现,但由于其中一些是协同工作的,因此它们堆积在一起,我无法正确地组织它们的位置。无论如何,我把电脑连接到一个1900x1200的屏幕上,随着窗口大小的增加,我可以修复它。但是我遇到了一个更大的问题,其中一些在程序运行时没有显示。它们是一个名为FlowLayoutPanel的控件。您可以使用它来支持“流体”布局。将GroupBox中的每组单选按钮替换为单个下拉组合框控件。更容易管理,更好的用户体验。为了解决这个问题,我遇到了一个更严重的问题,一些分组框甚至没有出现,尽管代码是正确的,但它们只有在我将它们移出堆栈时才会出现,你知道为什么会出现这种情况吗?另外,我是否需要任何类型的特殊控件来“隐藏”选项卡?您只需在设计器中设置
visible=false
。注意:我指的是一个额外的选项卡控件,而不是你拥有的页面;标签页不容易隐藏至于那些不会显示的分组框:是不是你把它们移到了其他分组框中,而不是移到了其他分组框中?这很棘手,因为你需要使用键盘;如果您使用鼠标,任何控件都会进入容器中,您可以将其移动。所有这些都会消失,只要你把他们分成他们自己的标签,或者每页一个Groupbox,或者甚至两个或更多。。当然,一旦找到它们;-)非常感谢,这是一个很好的机制,我基本上可以组织它们,然后在我希望它们准确显示时将它们移入和移出选项卡。顺便说一句:如果你需要的话,同样的机制也会帮助你“隐藏”一个
TabPage