我正在制作一个Windows Forms应用程序。我有一个表单。我想在运行时从原始表单上的按钮单击打开一个新表单。然后以编程方式关闭此新表单(2,3秒后),但是从与GUI主线程不同的线程中。
- 有人可以指导我如何做吗?
- 新表单会影响或妨碍原始主表单中正在进行的事情吗? (如果是,则如何停止它?)
如果要通过按钮点击打开,请在按钮事件处理程序中添加以下代码
var m = new Form1();
m.Show();
this.close();
var form2 = new Form2();
form2.Show();
关闭当前表单时,我会使用 this.Hide();
而不是
this.close();
看看这个Youtube频道链接,里面有一些易于入门的教程,如果你是初学者,可能会很有帮助。
private void button1_Click(object sender, EventArgs e)
{
New_Form new_Form = new New_Form();
new_Form.Show();
}
this.Load += new System.EventHandler(this.OnPageLoad);
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
}
}
就您的知识而言,
form.close()
会释放内存,我们将无法再与该表单进行交互。
form.hide()
只会隐藏表单,代码部分仍然可以运行。
有关计时器的更多详细信息,请参阅此链接,https://learn.microsoft.com/en-us/dotnet/api/system.timers.timer?view=netframework-4.7.2
void ButtQuitClick(object sender, EventArgs e)
{
QuitWin form = new QuitWin();
form.Show();
}
将ButtQuit更改为您的按钮名称,也将QuitWin更改为您创建的表单名称。
当单击按钮时,它将打开另一个窗口,您需要在主表单上创建另一个表单和一个按钮才能使其正常工作。
private void btnchangerate_Click(object sender, EventArgs e)
{
this.Hide(); //current form will hide
Form1 fm = new Form1(); //another form will open
fm.Show();
}
点击按钮后,当前表单将隐藏,新表单将打开。