【问题标题】:Show Groupbox when button is clicked or Bring GroupBox to front?单击按钮时显示 Groupbox 或将 GroupBox 置于前面?
【发布时间】:2019-07-31 04:32:51
【问题描述】:

我有 3 个包含各种 TextBox 和按钮的 GroupBox,我将 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;

}

【问题讨论】:

  • 你能检查一下你是否不小心把组框放在一起了吗?
  • 您谈论了 4 个分组框,但您只隐藏/显示了三个。是第四个吗?还要检查你是否嵌套了它们。
  • 我检查了它不是,很抱歉在同一位置只有 3 个组合框。
  • 你试过使用.BringToFront吗?

标签: c#


【解决方案1】:

是否有不能使用 TabControl 控件的原因?

根据我对您的描述的理解,该按钮也位于组框内。如果它们都在彼此之上,那么您只能单击顶部分组框的按钮。

如果不是上述情况

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

        // 
        // 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);

否则,只需自己声明组框,而不是依赖设计器。 (但是,这也需要手动声明文本框和处理程序)

【讨论】:

  • 组框内没有按钮,也有带按钮的菜单。当我从菜单中单击一个按钮时,我想更改组框
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
相关资源
最近更新 更多