切换组框可见性

本文关键字:可见性 | 更新日期: 2023-09-27 18:15:23

我有两个组框grpMetergrpTag。我必须把grpMeter除以grpTag。两者都需要相同的位置和大小。

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

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

切换组框可见性

将两个组框放在一起,这样它们就不会重叠,然后看看是否有效。如果您让它工作,不要用鼠标移动一个组框,而是只选择它,然后在Properties列表中手动设置坐标。

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

在button_click事件中试试这个逻辑:

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

试试这个:

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

见下面的代码。点击按钮将切换可见性。另外,在构造函数

中将其中一个组框设置为可见,另一个设置为不可见也很重要。
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;
        }
    }
}

我不确定,但你正在寻找的似乎是FlowLayoutPanel。然后你可以把组框放在一起,定位会自动处理。这可以防止意外地将一个GroupBox放到另一个GroupBox中或移动位置。

一个好的方法是使用RadioButton。选取两个单选按钮并将其放入组框中。

这样就可以了:

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;
}