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()ユーザーが選択を入力するのにどれくらいの時間がかかるかは誰にもわかりません。また、これは 1 回限りのポップアップになります。既存の INI ファイルの行を変更して、既に言語を選択している場合にポップアップしないようにします。助けてくれてありがとう。

4

3 に答える 3

2

を使用しlanguage.ShowDialog();ます。MSDNによると、その後のコードは、ダイアログ ボックスが閉じられるまで実行されません

于 2012-11-07T22:40:47.923 に答える
0

コードを前に置くのは少し危険です。フォームのコントロールに触れないようにするのを忘れると、 s に遭遇しますInitializeComponentNullReferenceExceptionただし、メンバー フィールドの更新は問題ありません。

ロードするコードは、おそらく INI ファイルがチェックされる場所の近くで、最初にFrmMainロードして実行できますか?FrmLanguage

于 2012-11-07T22:50:30.543 に答える
0

これでうまくいくかどうかわからないので、お役に立てるかどうか教えてください。

Main() メソッドでは、最初のフォームを次のようにロードできます。

Application.Run(new FrmLanguage());

次に、そのフォームから言語設定を収集し、通常どおり他のフォームをロードします。

于 2012-11-07T22:52:39.847 に答える