0

因此,管理层决定实施一个想法,允许用户选择程序的语言。在我看来,他们想要的方式是愚蠢的。但是,我无法改变他们的想法。这是它的工作原理。主窗体(frmMain)将开始加载。在 之前InitializeComponent(),他们希望加载另一个表单(frmLanguage),要求用户选择一种语言。现在,我可以让 frmLanguage 在适当的时间弹出。我的问题是,一旦显示 frmLanguage,如何防止或暂停 frmMain 继续加载?

public FrmMain()
{
    var language = new FrmLanguage();
    language.Show();

    // I need to pause the FrmMain right here

    InitializeComponent();
}

我在想线程可能是做到这一点的方法,但我对它的经验为零,所以我不确定这是否是正确的思路。我不想做Sleep()类似的事情,因为谁知道用户需要多长时间才能输入他们的选择。此外,这将是一次性弹出窗口。我将更改预先存在的 INI 文件中的一行,这样如果他们已经选择了一种语言,就不会弹出该行。感谢您的任何帮助。

4

3 回答 3

2

使用language.ShowDialog();. 根据MSDN,它后面的代码直到对话框关闭后才会执行。

于 2012-11-07T22:40:47.923 回答
0

之前放代码有点危险-如果您忘记避免尝试触摸表单上的控件,InitializeComponent您将遇到s 。NullReferenceException不过,更新成员字段是可以的。

加载的代码能否首先FrmMain加载并执行FrmLanguage,可能是在检查 INI 文件的位置附近?

于 2012-11-07T22:50:30.543 回答
0

我不确定这是否会起作用,所以请告诉我它是否对您有帮助。

在您的 Main() 方法中,您可以加载第一个表单:

Application.Run(new FrmLanguage());

然后从那个表格中收集语言设置,然后像往常一样加载另一个表格。

于 2012-11-07T22:52:39.847 回答