在C#中,当我单击第二个窗体的按钮时,如何在第一个窗体内打开第三个窗体
在我的在C#中,当我单击第二个窗体的按钮时,如何在第一个窗体内打开第三个窗体,c#,.net,visual-studio,winforms,C#,.net,Visual Studio,Winforms,在我的Windows窗体应用程序中,我有3个不同的Forms(Form1、Form2、Form3) 表单1包含一个按钮和一个面板(按钮1,面板1) 表单2仅包含一个按钮(按钮) 表单3不包含任何内容 在Form1中,当我单击按钮1时,Form2将在panel1中打开 private void button1_Click(object sender, EventArgs e) { panel1.Controls.Clear(); Form2 f2 = new Form2(
Windows窗体
应用程序中,我有3个不同的Form
s(Form1、Form2、Form3)
- 表单1包含一个按钮和一个面板(按钮1,面板1)
- 表单2仅包含一个按钮(按钮)
- 表单3不包含任何内容
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();
}
现在,在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();
}
注意:在表单1中,我已将面板的修改器更改为public步骤1:在表单1中创建函数以显示其他表单:
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
...
}
第二步:让Form2了解Form1。给Form2一个函数,在Form1中显示Form3
class Form2
{
public Form1 Form1 {get; set;}
protected void ShowForm3InsideForm1()
{
this.Form1.ShowForm3();
}
}
每当Form one创建Form2时,它都应该填充属性Form1
。所以在Form1.ShowForm2()中
第3步:每当你在表格2中发现你想“在表格1中显示表格3”,只要调用适当的函数即可
// Somewhere inside Form2 code you decide that you want to show Form3 inside Form1:
this.ShowForm3InsideForm1();
简单的问候 问题是什么?它不起作用吗?它会崩溃吗?仅从你所写的内容就不清楚了。“我已经试过这个代码了…”还有…什么?你没有提到这个问题。(提示:“它不工作”并不是我们在这里寻找的答案…更多的调试工作会有所帮助)另外,将表单控件添加到另一个面板有点奇怪…为什么不像平常一样打开和关闭表单呢?这:f1.panel1.controls.Clear()代码>和这个:panel1.Controls.Clear()代码>组合将成为应用程序的结尾。阅读有关用户控件的信息。将表单替换为某些自定义对象。很抱歉答复太晚。。。我的代码不起作用。。我试过很多次了。。
// Somewhere inside Form2 code you decide that you want to show Form3 inside Form1:
this.ShowForm3InsideForm1();