Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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,我有两个分组框grpMeter和grpTag。我必须在grpTag上放置grpMeter。。两者都需要相同的位置和大小 单击按钮时,我必须使它们交替可见。可能吗?我尝试了很多次,但只有一个组框可见。可能是因为重叠的问题。我试过使用面板,但同样的问题也出现了。有什么解决办法吗 public void ShowMeter() { grpMeter.Visible = true; grpTags.Visible = false; } public void ShowTag() {

我有两个分组框
grpMeter
grpTag
。我必须在
grpTag
上放置
grpMeter
。。两者都需要相同的位置和大小

单击按钮时,我必须使它们交替可见。可能吗?我尝试了很多次,但只有一个组框可见。可能是因为重叠的问题。我试过使用面板,但同样的问题也出现了。有什么解决办法吗

public void ShowMeter()
{
    grpMeter.Visible = true;
    grpTags.Visible = false;
}

public void ShowTag()
{
    grpTags.Visible = true;
    grpMeter.Visible = false;            
}
试试这个:

private void button_Click(object sender, EventArgs e)
{
    grpMeter.Visible = !grpMeter.Visible;
    grpTags.Visible = !grpTags.Visible;
}

在按钮单击事件中尝试此逻辑:

private void btn_Click(object sender, EventArgs e)
{
    if (grpTags.Visible)
        ShowMeter();
    else
        ShowTag();
}

我不确定,但你要找的似乎是什么。然后,您可以将分组框彼此相邻,定位将自动处理。这可以防止意外地将一个GroupBox放入另一个或移动位置。在设计时还提供了一种更方便的工作方式。

将两个分组框相邻放置,以使它们不会重叠,然后查看它是否工作。如果成功,请不要使用鼠标移动“一组”框,而是仅选择它,然后在“属性”列表中手动设置坐标


这样可以防止一个分组框意外成为另一个分组框的子框。

请参见下面的代码。单击按钮将切换可见性。同样重要的是,在构造函数中将一个GroupBox设置为可见,另一个设置为不可见

using System;
using System.Windows.Forms;

namespace TestForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //This is important. Set one of them to be Visible and the other one to be invisible
            grpMeter.Visible = false;
            grpTags.Visible = true;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            grpMeter.Visible = !grpMeter.Visible;
            grpTags.Visible = !grpTags.Visible;
        }
    }
}

一个好方法是使用
单选按钮
。取两个单选按钮并将其放在groupbox中

类似这样的方法会奏效:

private void rdMeter_CheckedChanged(Object sender, EventArgs e)
{
    grpMeter.Visible = rdMeter.Checked;
    grpTag.Visible = !rdMeter.Checked;
}

private void rdTag_CheckedChanged(Object sender, EventArgs e)
{
    grpTag.Visible = rdTag.Checked;
    grpMeter.Visible = !rdTag.Checked;
}

您是否已将这两个控件都添加到父容器中?不是WPF,是的,同一容器中的两个组框是否一个组框是另一个的子组框?可能是。。如何解决此问题?剪切未显示的groupbox,单击其假定的容器,然后再次粘贴。试试看。。。如果它能工作,你可以改变它的
位置
属性。他希望处理可见性而不是布局。我明白了,但对于相同的要求,我通常更喜欢使用flowlayoutpanel。我只是使分组框具有相同的大小,然后显示/隐藏。我不必担心定位问题。好的,我试试看。。它的工作方式是这样的,它们不会重叠。现在,如果要更改属性,您还可以使用箭头键将分组框移动到正确的位置。这是事实,但您只需复制和粘贴另一个分组框的位置/大小,可能会更快。这里的教训是:永远不要使用鼠标重叠两个容器控件!)