【问题标题】:C# Using an array of Forms to open multiple forms at the same timeC#使用表单数组同时打开多个表单
【发布时间】:2012-01-04 13:01:03
【问题描述】:

我试图让它一旦打开文件,就会打开同一表单的多个表单。所以在我下面的代码中,程序执行时会出现 10 种测试形式。我可以看到它在 ram 上工作,但它不想出现,或者它会出现一次,在我关闭一个表单后,另一个会打开:P

关于我做错了什么有什么想法吗?

谢谢:)

public partial class TestFrm : Form
{
    public TestFrm()
    {
        InitializeComponent();

        loopFrm();

    }

    public void loopFrm()
    {
        int loopNumber = 10;

        Form[] TestFrm = new Form[loopNumber];

        for (int i = 1; i < loopNumber; i++)
        { 
            TestFrm[i] = new TestFrm();

            TestFrm[i].ShowDialog();
        }
    }
}

【问题讨论】:

    标签: c# arrays forms loops


    【解决方案1】:

    你应该使用

    TestFrm[i].Show();
    

    代替

    TestFrm[i].ShowDialog();
    

    当 ShowDialog() 被调用时,它后面的代码直到对话框关闭后才会执行。

    【讨论】:

      【解决方案2】:

      ShowDialog() 是一个模态调用。它将等到表单关闭。如果您想打开所有表单,请使用Show()。但是这些形式不是主要形式的模态。

      【讨论】:

      • 因为表单打开的速度如此之快,我可以放慢它们的速度吗?
      • 您可以在两个 form.Show() 之间使用 Thread.Sleep(1000) 来做到这一点。这将等待 1000 毫秒。
      • 嗯,Visual Studio 不允许我使用线程...也是我目前使用表单上调用的方法的方式,每个新表单也有循环方法,所以改为of 10 我最终得到了更大的金额,我是否能够声明一个父表格并且只要求它?我正在考虑制作相同内容的两种形式并让第一种形式调用其他形式,代码中有更简单的方法吗?谢谢:)
      • 您在上面的示例中所做的是一个永无止境的循环。在表单的构造函数中,您在构造函数中调用方法“loopForm. This opens 10 new instances of the same form. In every of those 10 new instances you call loopForm”。因此,在第一轮“回合”结束时,您将拥有 100 个表格。第二“轮”为您提供 1000 个表格,......而且......它永远不会结束!您将不得不再次重新考虑程序逻辑。
      • 最终使用了另一个表单,所以父表单调用了子表单:P 计时器现在正在工作,我使用 System.Threading.Thread.Sleep(1000);
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      相关资源
      最近更新 更多