如何修复我的C# WinForms代码,以便在多次调用时重新加载表单?

ua4mk5z4  于 2023-06-06  发布在  C#
关注(0)|答案(1)|浏览(178)

我在C#中调用新表单时遇到问题。在主窗体中,我声明了子窗体AttributesInput frmAttributes = new AttributesInput();我使用下面的代码放入一个调用表单“AttributesInput”的按钮。

frmAttributes.TopLevel = false;
frmAttributes.Dock = DockStyle.Fill;
panelMain.Controls.Add(frmAttributes);
frmAttributes.Show();

成功调用并加载窗体。但是当我打开另一个窗体,然后再次单击该按钮时,AttributesInput窗体仍然被调用,显示出来,但不在Load()或Shown()事件上。
我还没找到解决办法我觉得我的代码有问题,真的希望你能帮我。

bfrts1fy

bfrts1fy1#

我试过下面的代码。我猜你没有意识到新打开的窗体在另一个窗体下面。

private void button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.Dock = DockStyle.Fill;
        f2.TopLevel = false;
        panel1.Controls.Add(f2);
        f2.Show();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form3 f3 = new Form3();
        f3.Dock = DockStyle.Fill;
        f3.TopLevel = false;
        panel1.Controls.Add(f3);
        f3.Show();
    }

Exam
添加以下解决方案代码

f2.BringToFront();

//f2是一个表单变量
像这样

private void button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.Dock = DockStyle.Fill;
        f2.TopLevel = false;
        panel1.Controls.Add(f2);
        f2.BringToFront();
        f2.Show();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form3 f3 = new Form3();
        f3.Dock = DockStyle.Fill;
        f3.TopLevel = false;
        panel1.Controls.Add(f3);
        f3.BringToFront();
        f3.Show();
    }

相关问题