我正在制作Windows窗体应用程序。我有一张表格。我想在按钮单击时从原始表单在运行时打开新表单。然后以编程方式关闭此新表单(2,3秒后),但是从gui主线程以外的线程中关闭。
答案 0 :(得分:31)
要点击按钮打开,请在按钮事件处理程序
中添加以下代码Form1 m = new Form1();
m.Show();
此处Form1是您要打开的表单的名称。
另外,要关闭当前表单,您可以使用
this.close();
答案 1 :(得分:11)
我会这样做:
Form2 frm2 = new Form2();
frm2.Show();
并关闭当前表单我会使用
this.Hide();
而不是
this.close();
查看此Youtube channel 链接以获取简单的启动教程,如果您是初学者,可能会觉得它很有用
答案 2 :(得分:1)
这可能也有帮助:
void ButtQuitClick(object sender, EventArgs e)
{
QuitWin form = new QuitWin();
form.Show();
}
将 ButtQuit 更改为您的按钮名称,还将 QuitWin 更改为您创建的表单的名称。
单击该按钮将打开另一个窗口,您需要在主表单上创建另一个表单和一个按钮。
答案 3 :(得分:0)
您只需使用Dispatcher从UI线程以外的线程执行图形操作。我不认为这会影响主表单的行为。这可能对您有所帮助: Accessing UI Control from BackgroundWorker Thread
答案 4 :(得分:0)
这个问题太老了,但要回答以收集知识。
我们有一个原始表单(主表单),带有一个按钮以显示新表单(第二表单)。
单击按钮的代码如下
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 System.Windows.Forms.Timer formClosingTimer;
public New_Form()
{
InitializeComponent();
}
private void OnPageLoad(object sender, EventArgs e)
{
formClosingTimer = new System.Windows.Forms.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()只会隐藏表单,代码部分仍可以在其中运行
有关计时器的更多详细信息,请参见此链接https://docs.microsoft.com/en-us/dotnet/api/system.timers.timer?view=netframework-4.7.2
答案 5 :(得分:0)
private void btnchangerate_Click(object sender, EventArgs e)
{
this.Hide(); //current form will hide
Form1 fm = new Form1(); //another form will open
fm.Show();
}
点击btn,当前表格将隐藏,新表格将打开