Csharp/C#教程:在Windows窗体应用程序中单击按钮时隐藏窗体并显示另一个窗体分享


在Windows窗体应用程序中单击按钮时隐藏窗体并显示另一个窗体

我正在做一个Windows窗体应用程序的应用程序。 首先,会出现某种forms,在用户点击下一个按钮后,应隐藏此表单并显示另一个表单。

我试着这样做。 我设法隐藏了当前的表格,但下一个表格不会显示。

这是我的尝试:

这是按钮的事件处理程序

private void button1_Click_1(object sender, EventArgs e) { if (richTextBox1.Text != null) { this.Visible=false; } else MessageBox.Show("Insert Attributes First !"); } 

这是主要function:

 static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form2 form2 = new Form2(); Form1 form1 = new Form1(); form2.Hide(); Application.Run(form1); while (true) { if (form1.Visible == false) form2.Show(); } } 

在form1关闭之后,While语句才会执行 – 因为它在主消息循环之外。

删除它并将代码的第一位更改为:

 private void button1_Click_1(object sender, EventArgs e) { if (richTextBox1.Text != null) { this.Visible=false; Form2 form2 = new Form2(); form2.show(); } else MessageBox.Show("Insert Attributes First !"); } 

这不是实现您想要做的事情的最佳方式。 而是考虑向导设计模式。

或者,您可以实现一个自定义ApplicationContext来处理两个表单的生命周期。 这里有一个实现启动画面的例子,它应该让你走在正确的道路上。

https://www.codeproject.com/KB/cs/applicationcontextsplash.aspx?display=Print

A)主GUI线程将在对Application.Run的调用中无休止地运行,因此永远不会到达while循环

B)你永远不会想要像这样的无限循环(while(true)循环) – 它只会冻结线程。 不确定你想要在那里实现什么。

我将在Main方法中创建并显示“main”(初始)表单(默认情况下,Visual Studio会为您执行此操作)。 然后在你的按钮处理程序中,创建另一个表单并显示它以及隐藏主表单(不关闭它)。 然后,确保在通过事件关闭该表单时再次显示主表单。 例:

 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 otherForm = new Form2(); otherForm.FormClosed += new FormClosedEventHandler(otherForm_FormClosed); this.Hide(); otherForm.Show(); } void otherForm_FormClosed(object sender, FormClosedEventArgs e) { this.Show(); } } 

Application.Run()之后的任何内容只会在主窗体关闭时执行。

您可以做的是处理VisibleChanged事件,如下所示:

 static Form1 form1; static Form2 form2; static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); form2 = new Form2(); form1 = new Form1(); form2.Hide(); form1.VisibleChanged += OnForm1Changed; Application.Run(form1); } static void OnForm1Changed( object sender, EventArgs args ) { if ( !form1.Visible ) { form2.Show( ); } } 

 private void button5_Click(object sender, EventArgs e) { this.Visible = false; Form2 login = new Form2(); login.ShowDialog(); } 

要链接到您需要的表单:

 Form2 form2 = new Form2(); form2.show(); this.hide(); 

然后隐藏上一个表格

我相信以下代码只会 form1关闭运行

  while (true) { if (form1.Visible == false) form2.Show(); } 

为什么不从form1启动form2呢?

上述就是C#学习教程:在Windows窗体应用程序中单击按钮时隐藏窗体并显示另一个窗体分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 Form2 form2 = new Form2(); private void button1_Click_1(object sender, EventArgs e) { if (richTextBox1.Text != null) { form1.Visible=false; form2.Show(); } else MessageBox.Show("Insert Attributes First !"); } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/991204.html

(0)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐