组框的可见性错误

Visibility bug with group box

提问人:LMCFCA 提问时间:8/29/2022 更新时间:8/29/2022 访问量:212

问:

我有一个带有 2 个单选按钮的表单,对于每个单选按钮,当选中它们时,一个组框是相关的(单选按钮 1 显示组框 1 并隐藏组框 2 / 单选按钮 2 显示组框 2 并隐藏组框 1)。 它工作得很好,但我需要根据用户连接的服务器强制显示一个组框,当我这样做时,我会隐藏单选按钮,以免给用户留下任何选择。 所以我做了这样的事情:

 if(m_lastSelectedNode.Text == "server1")
                {
                    label1.Visible = false;
                    label2.Visible = true;
                    MainForm_GroupBox_1.Visible = false;
                    MainForm_GroupBox_2.Visible = true;
                }
 else if (m_lastSelectedNode.Text == "server2")
                {
                    label1.Visible = true;
                    label2.Visible = false;
                    MainForm_GroupBox_1.Visible = true;
                    MainForm_GroupBox_2.Visible = false;
       
                }
 else
                {
                    label1.Visible = false;
                    label2.Visible = false;
                    MainForm_GroupBox_1.Visible = true;
                }

所以这里发生的事情是,当我连接到 server1 时,只显示 groupbox 2,它不起作用,此外,如果我回到经典服务器并尝试使用单选按钮做常规事情,groupbox2 将不会显示(组框 1 没有问题),但如果我首先连接到常规服务器, 使用单选按钮执行常规操作以显示组框 2 然后连接到服务器 1,它将按照我想要的方式工作。

我不明白这怎么可能,我对隐藏单选按钮的标签没有问题,对于两个组框,这不是重叠问题,所以这里有任何建议吗?

C# .NET WinForms GroupBox

评论

0赞 Danish 8/29/2022
您能描述一下当您说连接到服务器 1 时是什么意思吗?我相信您正在谈论从屏幕上选择它们。我有一种预感,您的代码最初正在到达可以调试的 else 块。
0赞 LMCFCA 8/29/2022
基本上,窗体上会显示一个 TreeView,当用户双击服务器时,会出现 ConnectToWorkspace 方法,我发送的代码就在此方法中。
0赞 LMCFCA 8/29/2022
我已经验证了,并且根据所选的服务器,可以通过方法正确访问每个块。
0赞 Danish 8/29/2022
好的,那么在调试第一个选择时,您会注意到什么?
0赞 LMCFCA 8/29/2022
就像我说的,这取决于我打开表单时首先做什么,如果我做的第一件事是块 1 (server1),那么对于所有会话,即使我之后更改了我的服务器,我也将无法看到组框 2(bc 您可以在会话期间更改服务器)否则,如果我先执行块 3(else)并使用单选按钮将组框更改为 2, 即使您在之后连接到服务器 1,它也会像我想要的那样在会话的其余部分工作。

答:

0赞 LMCFCA 8/29/2022 #1

我通过放弃可见参数找到了解决方案。默认情况下,我将两个组框可见设置为 true,并且我选择更改隐藏它们的位置,而不是使用 visible。我想这不是最佳的,但它有效。