winforms 在winform上显示多个组框

fjaof16o  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(139)

因此,在我的WinForms应用程序中,我需要显示几个“页面”(即包含文本框,按钮,屏蔽框等的组框)在我的应用程序的一个主页上。首先我尝试使用“用户控制器",但没有成功,因为控制器的名称与传递给数据库连接的名称不匹配。所以我试着通过“位置属性”将这些组框一个放在另一个的上面,但现在我有一个重大的问题,当我决定做一些改变这些groupbox控制器。这是非常困难的访问他们,我想知道是否有'这是另一种方法,因为它看起来很业余......我如何实现这种功能,而不把groupbox放在另一个之上?我也想知道,是正确的做与groupbox或我应该使用面板?
方法示例:

private void btnCadastrarBeneficiario_Click(object sender, EventArgs e)
    {
        groupBoxUsuarioCadastro.Visible = false;
        groupBoxClienteCadastro.Visible = false;
        groupBoxHospitalCadastro.Visible = false;
        GroupBoxMonitoramento.Visible = false;
        groupBoxBeneficiarioCadastro.Visible = true;

    }

我使用了visibility属性,这样我就可以显示(或不显示)组框,并使它们像实际页面一样工作。
---EDIT----为了清楚起见,我创建了一个最小版本的内容:

namespace WinFormsApp1
    {
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        groupBox2.Visible = false;
        groupBox3.Visible = false;  
        groupBox1.Visible = true;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        groupBox1.Visible = false;
        groupBox3.Visible = false;
        groupBox2.Visible = true;
    }

    private void button3_Click(object sender, EventArgs e)
    {
        groupBox1.Visible = false;
        groupBox2.Visible = false;
        groupBox3.Visible = true;
    }
}

}
这是一个最小的应用程序的代码,和我正在做的很相似。它运行得很好,但是我想知道是否有其他的方法来做它,一个更有效、更有组织和更复杂的方法。

5us2dqdw

5us2dqdw1#

我倾向于这样做:

private void button1_Click(object sender, EventArgs e)
{
    HideAllBut(groupBox1);
}

private void button2_Click(object sender, EventArgs e)
{
    HideAllBut(groupBox2);
}

private void HideAllBut(GroupBox groupToShow)
{
    var groups = new[] {groupBox1, groupBox2};

    foreach(var gb in groups)
    {
        gb.Visible = (gb == groupToShow);
    }
}

显然,您可以将其扩展到任意类型的控件。

相关问题