C# 以编程方式从另一个窗体打开窗口窗体
我正在制作一个Windows窗体应用程序。我有一张表格。我想在运行时通过单击按钮从原始表单打开一个新表单。然后以编程方式关闭此新表单(2,3秒后),但从gui主线程以外的线程关闭C# 以编程方式从另一个窗体打开窗口窗体,c#,winforms,C#,Winforms,我正在制作一个Windows窗体应用程序。我有一张表格。我想在运行时通过单击按钮从原始表单打开一个新表单。然后以编程方式关闭此新表单(2,3秒后),但从gui主线程以外的线程关闭 有人能指导我怎么做吗 新的形式会影响或阻碍以原来的主要形式进行的事情吗?(如果是,如何停止?) 您只需要使用Dispatcher从UI线程以外的线程执行图形操作。我不认为这会影响主要形式的行为。这可能会帮助您: 要使用按钮单击打开,请在按钮事件处理程序中添加以下代码 var m = new Form1(); m.Sho
您只需要使用Dispatcher从UI线程以外的线程执行图形操作。我不认为这会影响主要形式的行为。这可能会帮助您:
要使用按钮单击打开,请在按钮事件处理程序中添加以下代码
var m = new Form1();
m.Show();
这里Form1是要打开的表单的名称 此外,要关闭当前表单,您可以使用
this.close();
我会这样做:
var form2 = new Form2();
form2.Show();
要关闭当前窗体,我将使用
this.Hide()代码>而不是
this.close();
查看此链接以获取简易入门教程如果您是初学者,您可能会发现它很有用这是一个老问题,但回答此问题是为了收集知识。
我们有一个带有按钮的原始表单来显示新表单
点击按钮的代码如下所示
private void button1_Click(object sender, EventArgs e)
{
New_Form new_Form = new New_Form();
new_Form.Show();
}
现在,单击后,将显示新表单。因为,您想在2秒钟后隐藏,我们正在向新表单设计器添加一个onload事件
this.Load += new System.EventHandler(this.OnPageLoad);
加载表单时,会运行此OnPageLoad函数
在NewForm.cs中
public partial class New_Form : Form
{
private Timer formClosingTimer;
private void OnPageLoad(object sender, EventArgs e)
{
formClosingTimer = new Timer(); // Creating a new timer
formClosingTimer.Tick += new EventHandler(CloseForm); // Defining tick event to invoke after a time period
formClosingTimer.Interval = 2000; // Time Interval in miliseconds
formClosingTimer.Start(); // Starting a timer
}
private void CloseForm(object sender, EventArgs e)
{
formClosingTimer.Stop(); // Stoping timer. If we dont stop, function will be triggered in regular intervals
this.Close(); // Closing the current form
}
}
在这个新表单中,计时器用于调用关闭该表单的方法
这是2秒后自动关闭的新窗体,我们将能够在这两个窗体之间没有干扰的情况下操作这两个窗体
就你所知
form.close()
将释放内存,我们再也无法与该表单交互
form.hide()
只会隐藏表单,其中代码部分仍然可以运行
有关计时器的更多详细信息,请参阅此链接
点击btn,当前表单将隐藏,新表单将打开,这也可能有帮助:
void ButtQuitClick(object sender, EventArgs e)
{
QuitWin form = new QuitWin();
form.Show();
}
将ButtQuit更改为您的按钮名称,并将QuitWin更改为您制作的表单名称
单击按钮将打开另一个窗口,您需要在主窗体上创建另一个窗体和一个按钮以使其工作。为什么要等待2,3秒?您是否尝试过任何操作?这是我最喜欢重复的问题之一……:)什么是窗体1?窗体1是要打开的窗体的名称。如果它被命名为其他名称,那么在这里使用其他名称。
void ButtQuitClick(object sender, EventArgs e)
{
QuitWin form = new QuitWin();
form.Show();
}