简体   繁体   English

在 C# 中,当我单击第二个表单的按钮时,如何在第一个表单中打开第三个表单

[英]In C# how to open third form inside first form when i click a button of the second form

In my Windows Forms application, I have 3 different Form s ( Form1, Form2, Form3 )在我的Windows Forms应用程序中,我有 3 个不同的Form ( Form1, Form2, Form3 )

  • Form1 Contains a Button and a Panel (button1, panel1) Form1包含一个按钮和一个面板 (button1, panel1)

    Form1 图片

  • Form2 Contains only a button (button) Form2只包含一个按钮(button)

    Form2 图片

  • Form3 Contains nothing Form3 不包含任何内容

    Form3 图片

In Form1 when I click button1 , Form2 opens in panel1在 Form1 中,当我单击 button1 时,Form2 在 panel1 中打开

(见图片)

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

Now, inside Form2, when i click the button, I want the Form3 open inside Form1's panel, I've tried this code...现在,在 Form2 中,当我单击按钮时,我希望在 Form1 的面板内打开 Form3,我已经尝试过此代码...

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

Note: In Form1 I've changed the modifier to public for the Panel注意:在 Form1 中,我已将面板的修饰符更改为 public

Step 1: Create functions in Form1 to Show the other Forms:步骤 1:在 Form1 中创建函数以显示其他表单:

class Form1
{
    public void ShowForm2() {...}
    public void ShowForm3() {...}
    // TODO: think about: do you need IsForm2Shown?
    // TODO: think about what you want if ShowForm2 is called twice
    ...

} }

Step 2: Let Form2 know about Form1.第 2 步:让 Form2 了解 Form1。 Give Form2 a function to show Form3 inside Form1给 Form2 一个函数在 Form1 里面显示 Form3

class Form2
{
    public Form1 Form1 {get; set;}

    protected void ShowForm3InsideForm1()
    {
        this.Form1.ShowForm3();
    }
}

Whenever Form one creates Form2 it should fill property Form1 .每当 Form one 创建 Form2 时,它应该填充属性Form1 So inside Form1.ShowForm2() :所以里面Form1.ShowForm2()

var form2 = new Form2()
{
   Form1 = this,
   ...
}
form2.Show();

Step 3: whenever you find in Form 2 that you want to "show form 3 in form 1", just call the proper function第 3 步:每当您在 Form 2 中发现要“在表单 1 中显示表单 3”时,只需调用适当的函数

// Somewhere inside Form2 code you decide that you want to show Form3 inside Form1:
this.ShowForm3InsideForm1();

Simple comme bonjour!简单的来吧!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 当我在第一个表单中打开第二个表单时,它无法正常工作(C#) - When I open the second form within the first one, it doesn't work properly (C#) c# - 如何将值从第一种形式传递到第三种形式? - How to pass value from first form to the third form on c#? 如何在c#中创建一个类,以便我可以单击1表单上的按钮来更新第二个表单上的数据? - How do I make a class in c# so I can click a button on 1 form to update data on a second form? 当第一个表格已经加载时,如何打开第二个表格作为对话框? - How to open a second Form as dialog when the first Form is already loaded? 当我按下C#中的Form1上的按钮时,如何从Form1内部显示原始Form2 - how would I show the original Form2 from inside Form1 when I press button on Form1 in C# C#表单应用程序(如何显示();第二个表单首先使用按钮 - C# form application(how to show(); a second form first using a button 在C#.net中打开第二个表单时如何停止第一个表单的功能 - How to stop the functions of first form when second form is open in C#.net 如何在C#中的第二个表单中隐藏表单中的按钮 - How to hide a button in a form from the second form in C# 如何将列表从我的第一个表单传递到第二个表单,向其中添加数据,然后在我的第一个表单上显示它? C# - How can i pass a list from my first form to a second form, add data to it and then show it on my first form? C# 从第三种形式打开第二种形式 - Open second form from third form
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM