4

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

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

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

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

6 回答 6

15

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

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

于 2013-05-27T07:10:16.830 回答
1

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

private void btn_Click(object sender, EventArgs e)
{
    if (grpTags.Visible)
        ShowMeter();
    else
        ShowTag();
}
于 2013-05-27T07:06:11.820 回答
0

试试这个:

private void button_Click(object sender, EventArgs e)
{
    grpMeter.Visible = !grpMeter.Visible;
    grpTags.Visible = !grpTags.Visible;
}
于 2013-05-27T07:02:30.807 回答
0

我不确定,但您正在寻找的似乎是FlowLayoutPanel。然后您可以将组框并排放置,并自动处理定位。这可以防止意外地将一个 GroupBox 放入另一个或移动位置。还提供了在设计时更轻松的工作。

于 2013-05-27T07:08:44.887 回答
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;
        }
    }
}
于 2013-05-27T07:16:40.757 回答
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;
}
于 2013-05-27T07:26:57.520 回答