如何使用按钮事件在C#中切换表单
我这里有一些代码:如何使用按钮事件在C#中切换表单,c#,.net,winforms,C#,.net,Winforms,我这里有一些代码: private void button1_Click(object sender, EventArgs e) { Application.Run(new Form3()); } 虽然我不认为这是您更改表单的方式,但当我运行它时,它抛出了一个错误,指出: 在服务器上启动第二个消息循环 单线程不是有效的操作 您不能使用应用程序。运行-这是用于启动windows窗体应用程序(应用程序中所有窗体共享的内部消息循环),而不是用于显示窗体。每个表单都有Show和Hide方法,因
private void button1_Click(object sender, EventArgs e)
{
Application.Run(new Form3());
}
虽然我不认为这是您更改表单的方式,但当我运行它时,它抛出了一个错误,指出:
在服务器上启动第二个消息循环
单线程不是有效的操作
您不能使用
应用程序。运行-这是用于启动windows窗体应用程序(应用程序中所有窗体共享的内部消息循环),而不是用于显示窗体。每个表单都有Show
和Hide
方法,因此您只需调用:
private void button1_Click(object sender, EventArgs e)
{
Form3 f = new Form3(); // This is bad
f.Show();
}
但您不应该在每次要显示表单时都创建表单。如果您只想拥有表单的一个实例,则应将其保持为全局,并且仅在需要时显示或隐藏。否则,您必须调用Close
而不是Hide
,以清除表单消耗的所有资源。您可以简单地执行以下操作:
test mp = new test();
mp.Text = " Welcome Mr." + textBox1.Text;
this.Hide();
mp.ShowDialog();
this.Close();
你的新表格在哪里
然后,如果您将变量传递到另一个表单,只需将您的变量作为公共变量,就可以:
mp.Text = " Welcome Mr." + textBox1.Text;
然后showdialog显示新表单并关闭旧表单。您的第一个表单应在第一次使用时创建第二个表单,并将其隐藏在视图中。然后,当您切换回时,第二个窗体将隐藏自己并显示第一个窗体。像这样的
private Form _firstForm;
private Form _secondForm;
private void switchToSecond_Click(object sender, EventArgs e)
{
if (_secondForm == null)
_secondForm = new SecondForm();
Hide();
_secondForm.Show();
}
private void switchToFirst_Click(object sender, EventArgs e)
{
Hide();
_firstForm.Show();
}
您可以在第一个表单类的构造函数内将此值分配给第一个表单,因为这是主表单,所以它将始终在应用程序启动时创建。如果要保存资源,也可以在切换回第一个窗体时丢弃第二个窗体,以便在每次切换时重新创建它。this.Hide();//隐藏当前窗体。
菜单菜单=新菜单();//创建新窗体的新实例。
menu.Show();//表现出来
假设您有Form1
和Form2
如果需要,您的范围不清楚
在Form1
和Form2
之间切换,并使两者保持活动状态
一次只保留Form1
或Form2
对于案例1,简单的Form1.Hide()和Form2.Show()
就足够了
对于案例2,解决方案将有点复杂
创建自己的ApplicationContext MyAppCxt=new ApplicationContext()
实例
而不是默认的Program.Run(Form1)
callProgram.Run(MyAppCxt(Form1))
在某个事件的处理程序中,当您需要切换Form1
和Form2
form2f2=newform2()//创建新表单
MyAppCxt.MainForm=f2//将Form2设置为消息队列中的MainForm
Form2.Close()//关闭Form2并释放所有资源
F2.Show()//向用户显示Form2
当需要在Form2
和Form1
之间切换时,会重复相同的场景,只需(新的Form3())。Show()
?可能重复