切换组框可见性

时间:2013-05-27 06:56:09

标签: c# winforms

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

点击按钮,我必须交替显示它们。可能吗?我尝试了很多次,但只有一个组框变得可见。也许是因为重叠的问题。我尝试使用面板,但同样的问题出现了。有没有解决方案?

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

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

6 个答案:

答案 0 :(得分:12)

将两个组框彼此相邻放置,使它们不重叠,然后查看它是否有效。如果使其正常工作,不要使用鼠标移动一个组框,而只选择它,然后在“属性”列表中手动设置坐标。

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

答案 1 :(得分:1)

在button_click事件中尝试此逻辑:

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

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

我不确定,但你要找的是FlowLayoutPanel。然后,您可以将组框彼此相邻放置,并自动处理定位。这可以防止意外地将一个GroupBox放入另一个或移动位置。还可以在设计时更轻松地工作。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

其中一个好方法是使用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;
}