0

最初に、私が何をしようとしているのか、次にどのようにしようとしているのかを説明します。より良い方法があれば教えてください。

私は2つのフォームで作業しています-それらをform_mainとform_preferencesと呼びましょう

form_preferences フォームが立ち上がったら、form_preferences のボタン (保存ボタン) がクリックされるまで form_main を無効にしたい。

だからここに私がやっていることがあります:ボタンはform_mainでクリックされます

form_preferences frm_p = new form_preferences();
frm_p.Visible = true;
this.enabled = false;

//ここまでは順調ですね

form_preferences で保存を押すと、フォームを再度有効にする必要がある form_main の public static メソッドが呼び出されます。残念ながら、これは静的メソッドであるため、直接行うことはできません。

フォームの新しいインスタンスを作成しようとしましたが、新しいインスタンスを作成し、元のインスタンスを破棄する必要があり、非常に無駄で非効率的です。これを行うより良い方法はありますか?

4

2 に答える 2

1

form_main メソッドを静的ではなくインスタンス メソッドに変更します。作成時に form_main のインスタンスを sub_form に渡して、参照を保持します。

于 2009-07-13T06:17:07.637 に答える
0

メイン フォームのコピーが 1 つしかない場合は、フォームをシングルトンにするか、プログラムで静的参照を使用して静的メソッド内からアクセスします。

あなたの主な方法では、次のことを行います...

public static class Program {

  public static YourFrom form = null;

  public static void Main(string args[]) {
    Program.form = new YourFrom();
    Application.Run(form);   
  }
}

また、クラス内のフォーム オブジェクトにアクセスする必要があるときはいつでも、Program.form オブジェクトを使用してアクセスします。

于 2009-07-13T06:31:43.380 に答える