切换组框可见性
本文关键字:可见性 | 更新日期: 2023-09-27 18:15:23
我有两个组框grpMeter
和grpTag
。我必须把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;
}