24

我正在制作一个 Windows 窗体应用程序。我有一个表格。我想在运行时通过单击按钮从原始表单打开一个新表单。然后以编程方式关闭这个新表单(2,3 秒后),但从 gui 主线程以外的线程关闭。

  1. 有人可以指导我怎么做吗?
  2. 新形式是否会影响或阻碍原主形式中发生的事情?(如果是,那么如何阻止它?)
4

6 回答 6

49

要使用按钮单击打开,请在按钮事件处理程序中添加以下代码

var m = new Form1();
m.Show();

这里 Form1 是您要打开的表单的名称。

另外要关闭当前表单,您可以使用

this.close();
于 2013-02-23T14:43:34.003 回答
12

我会这样做:

var form2 = new Form2();
form2.Show();

并关闭我会使用的当前表格

this.Hide();代替

this.close();

查看此Youtube 频道链接以获取简单的启动教程,如果您是初学者,您可能会发现它很有帮助

于 2013-02-23T14:56:27.547 回答
6

这是一个老问题,但回答是为了收集知识。我们有一个带有按钮的原始表单来显示新表单。

在此处输入图像描述

按钮单击的代码如下

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()将只是隐藏表单,代码部分仍然可以运行

有关计时器的更多详细信息,请参阅此链接,https://docs.microsoft.com/en-us/dotnet/api/system.timers.timer?view=netframework-4.7.2

于 2018-08-29T17:29:45.370 回答
1

您只需要使用 Dispatcher 从 UI 线程以外的线程执行图形操作。我认为这不会影响主窗体的行为。这可能会对您有所帮助: 从 BackgroundWorker 线程访问 UI 控件

于 2013-02-23T14:22:00.020 回答
1

这也可能有帮助:

void ButtQuitClick(object sender, EventArgs e)
{
    QuitWin form = new QuitWin();
    form.Show();
}

将ButtQuit更改为您的按钮名称,并将QuitWin更改为您创建的表单的名称。

单击按钮时,它将打开另一个窗口,您需要在主窗体上创建另一个窗体和一个按钮才能使其工作。

于 2019-06-17T13:56:23.443 回答
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 当前表单将隐藏并打开新表单

于 2018-12-21T04:46:28.790 回答