单击按钮时显示Groupbox还是将GroupBox带到前面?

时间:2019-03-09 07:40:33

标签: c#

我有3个GroupBox,其中包含各种TextBox和Button,我将3个GroupBox彼此叠放,并创建了4个按钮,这样,当单击其中一个按钮时,所指的GroupBox就会显示在另一个按钮上方。为此,我尝试了.Visible和.BringToFront命令。但这没有用。

private void bunifuFlatButton1_Click(object sender, EventArgs e)
{
    LOGINGROUP.Visible = true;
    LOGINGROUP1.Visible = false;
    LOGINGROUP2.Visible = false;
}

private void bunifuFlatButton2_Click(object sender, EventArgs e)
{

    LOGINGROUP1.Visible = true;
    LOGINGROUP.Visible=false;
    LOGINGROUP2.Visible = false;
}

private void bunifuFlatButton3_Click(object sender, EventArgs e)
{

    LOGINGROUP2.Visible = true;
    LOGINGROUP1.Visible = false;
    LOGINGROUP.Visible = false;

}

1 个答案:

答案 0 :(得分:0)

您有不能使用TabControl控件的原因吗?

根据我对您的描述的理解,该按钮也位于组框内。如果它们都位于顶部,则只能单击顶部组框的按钮。

如果不是以上情况

此问题很可能是由于Visual Studio设计器中的组框的行为引起的。当将一个组框放置在设计器中的另一个框的顶部时,顶部框将自动放置在底部框中,这可以在设计器生成的以下代码中看到:

        // 
        // groupBox1
        // 
        this.groupBox1.Controls.Add(this.groupBox2);
        this.groupBox1.Location = new System.Drawing.Point(13, 13);
        this.groupBox1.Name = "groupBox1";
        this.groupBox1.Size = new System.Drawing.Size(232, 227);
        this.groupBox1.TabIndex = 0;
        this.groupBox1.TabStop = false;
        this.groupBox1.Text = "groupBox1";

重点是这部分:

this.groupBox1.Controls.Add(this.groupBox2);

如您所见,groupBox2被放置为groupBox1的控件,这会导致发送到前端的问题,因为group中的唯一控件是它本身以及与之重叠的文本框。

要解决此问题,您只需更改

this.groupBoxX.Controls.Add(this.groupBoxY);

this.Controls.Add(this.groupBoxY);

或其他方式,只需自己声明组框即可,而不必依赖设计器。 (但是,这也需要手动声明文本框和处理程序)