运行Form1 5次,然后关闭Form1,重新启动

时间:2015-10-27 18:24:55

标签: c# winforms visual-studio-2012

我想添加一个循环:

private void button5_Click(object sender, EventArgs e)
{

}

这将运行Form1 5次,延迟3秒而不是关闭所有,而不是再次执行。 我正在使用此代码手动打开它们;

Form1 form = new Form1();
form.Show();

我需要用;

来停止循环
private void button6_Click(object sender, EventArgs e)
{

}

我是编码的新手,如果你能用代码示例解释它,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

我不确定你为什么要这个。但这是方法。

你需要Timer,间隔为3000毫秒(3秒),每隔一段时间就会触发一次事件。在该活动中,您将打开表格,如果打开5个表格,将关闭所有表格。

Timer _timer = new Timer(); // This is the timer

List<Form> forms = new List<Form>(); // This will hold list of forms.

private void button1_Click(object sender, EventArgs e)
{
    _timer.Enabled = !_timer.Enabled; // toggle event with this button.
}

private void Form1_Load(object sender, EventArgs e) // initialize timer with form load event
{
    _timer.Interval = 3000; // set interval
    _timer.Tick += OpenUpForm; // set event
}

private void OpenUpForm(object sender, EventArgs e) // this is the event that should be fired every 3 seconds
{
    if (forms.Count == 5) // if forms reached 5 attempt to close all
    {
        // ForEach will perform this actions for every form in forms list
        forms.ForEach(f =>
        {
            f.Close(); // close form
            f.Dispose(); // free resources
        });
        forms.Clear(); // clear the list
        return;
    }
    forms.Add(new Form()); // add a new form to list
    forms.Last().Show(); // show the form
}

请注意,这只会打开空表单。如果要打开特定表单,则应创建该表单的5个副本并将其放入列表中。然后打开和关闭它们。