因此,管理层决定实施一个想法,允许用户选择该程序的语言。在我看来,他们想要的方式是愚蠢的。但是,我无法改变主意。这是它的工作原理。主窗体(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文件中更改一行,以便在他们已经选择语言时不会弹出。感谢您的帮助。
答案 0 :(得分:2)
使用language.ShowDialog();
。每MSDN,后面的代码直到对话框关闭后才会执行。
答案 1 :(得分:0)
在InitializeComponent
之前放置代码有点危险 - 如果您忘记避免尝试触摸表单上的控件,则会遇到NullReferenceException
s。但是,更新成员字段是可以的。
加载FrmMain
的代码是否可以首先加载并执行FrmLanguage
,可能在检查INI文件的位置附近?
答案 2 :(得分:0)
我不确定这是否有效,所以请告诉我它是否对您有帮助。
在Main()方法中,您可以使用以下内容加载第一个表单:
Application.Run(new FrmLanguage());
然后从该表单中收集语言设置,并像平常一样加载另一个表单。