防止表单加载直到用户输入

时间:2012-11-07 22:29:18

标签: c# winforms

因此,管理层决定实施一个想法,允许用户选择该程序的语言。在我看来,他们想要的方式是愚蠢的。但是,我无法改变主意。这是它的工作原理。主窗体(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文件中更改一行,以便在他们已经选择语言时不会弹出。感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

在Main()方法中,您可以使用以下内容加载第一个表单:

Application.Run(new FrmLanguage());

然后从该表单中收集语言设置,并像平常一样加载另一个表单。