【问题标题】:WPF opening new window on current window close in loopWPF在当前窗口上打开新窗口关闭循环
【发布时间】:2011-03-06 22:01:05
【问题描述】:

我正在开发一个程序,它读取一个文本文件并将其部分存储在一个数组中的块中,然后(这是理论)解析每个块(索引)中的文本并用解析后的文本填充一系列文本框数据。因为每个块都会包含相同字段的数据,所以我的想法是当用户关闭当前窗口时打开一个新窗口并处理下一个索引中的数据。这将一直持续到达到数组的长度为止。

我的问题是我不知道要打开一个新窗口并为未知数量的索引增加数组的索引。

这是我存储块的代码:

            using (StreamReader r = new StreamReader(fname))
            {

                string input = File.ReadAllText(fname);//read through file

                String[] vArray = input.Split(new string[] { "BEGIN:VCARD" }, StringSplitOptions.None); ...

然后我的处理代码是:

                            int i;

                        parser(vArray[1]);

                        MainWindow a = new MainWindow();
                        a.parser(vArray[2]);
                        a.Show();

                        for (i = 1; i < vArray.Length - 2; i++)
                        {                                
                            a.Closing += delegate(object sender, System.ComponentModel.CancelEventArgs e)
                            {
                                MainWindow b = new MainWindow();
                                b.parser(vArray[i++]);
                                b.Show();
                            };
                        }

这似乎很明显,但我似乎无法理解 :) 任何帮助都将受到欢迎和赞赏。

【问题讨论】:

    标签: c# event-handling for-loop vcf-vcard


    【解决方案1】:

    一个问题似乎是您在第一个表单上多次订阅 Closing 事件,当该表单将立即弹出所有其他表单时。

    我建议使用ShowDialog 而不是Show。
    ShowDialog 会阻止执行,直到打开的表单关闭。然后您可以删除任何关闭事件。

    然后您也可以将所有内容简化为 foreach 循环。

    foreach (var v in vArray)
    { 
        MainWindow mainWindow = new MainWindow();
        mainWindow.parser(v);
        mainWindow.ShowDialog();
    }
    

    【讨论】:

      【解决方案2】:

      试试Window.ShowDialog,而不是show。

      不同的是,使用 showdialog,程序在继续之前等待表单关闭。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-29
        • 2021-07-21
        • 2022-07-02
        • 2021-03-28
        • 1970-01-01
        • 2021-02-20
        相关资源
        最近更新 更多