説明できるといいのですが、テキストが異なる言語になるので申し訳ありません。私がやろうとしているのは、2つのウィンドウがあり、1つはメインで、もう1つはcsvファイルの保存用です。私の現在のプログラムでは、チェックボックスをオンにして[OK]ボタンをクリックすると動作しますが、閉じるとチェックボックスはオフになりますが、開いた後はチェックボックスをオンのままにしておく必要があります。私の窓は次のようなものです:
申し訳ありませんが、私のウィンドウは別の言語になっていますが、これは重要ではないと思います
とてもシンプルだと思います、 Form1という名前の最初のフォームとForm2という名前の2番目のフォームがあると仮定します。 考えは、チェックされた値をチェックして返すこの関数を使用することです。フォーム2を再び開くと、保存された値に基づいてチェックボックスがチェックまたはチェック解除されます。
フォーム2で、Modifiers = publicチェックボックスを作成します
//Form 1 public bool status; // create global string to be accessed in form2 Form2 fm2 = new Form2(); // make an instance of form 2 fm2.stored_status = status; // assign the stored value to the getter and setter in form 2 fm2.ShowDialog(); // open form2 in dialog style status = fm2.GetStatus(fm2.checkBox1); //call the function and store // Form 2 public bool stored_status { get; set; } // define getter and setter private void Form2_Load(object sender, EventArgs e) { if (stored_status) // check if stored value equal checked checkBox1.Checked = true; // make the checkbox checked else // if not checkBox1.Checked = false; // keep it unchecked } public bool GetStatus(CheckBox check) // returns true of false and takes paramter of checkbox { if (check.Checked) // check if checkbox1 is checked return true; // return true else // if not return false; // return false }
これはそれほど難しくありません。 Form1には1つの
Boolean
が必要です グローバル変数currentCheckState
Form2
の以前の状態を保持する チェックボックス。作成したら、falseに初期化します。Form2
少し調整が必要です。最初に、Boolean
を取得する「コンストラクタ」 チェックボックスを前の状態に設定するには変数が必要です。このアプローチでは、コンストラクタ自体にチェックボックスを設定できます。次に、ユーザーが[保存]ボタンをクリックしてフォームを閉じるときにチェックボックスの状態を保持するために、パブリックな「ブール」変数が必要です。一度
Form2
閉じます、Form1
グローバルcurrentCheckState
を設定できます 新しいチェックボックスの状態になり、プロセスが繰り返されます。以下は、上記の内容の例です。Form2
public partial class Form2 : Form { public bool currentState; public Form2(bool previousState) { InitializeComponent(); checkBox1.Checked = previousState; } private void btnSave_Click(object sender, EventArgs e) { currentState = checkBox1.Checked; this.Close(); } }
Form1
public partial class Form1 : Form { private bool currentCheckState = false; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(currentCheckState); f2.ShowDialog(); currentCheckState = f2.currentState; } }
これが理にかなっていることを願っています。
関連記事
- 単一のチェックボックスがクリックされたときに、divの他のチェックボックスをオフにします
- 行ごとにチェックボックスをオンまたはオフにします
- JQueryは、チェックボックス行ごとに1つのチェックボックスのみをチェックします
- C#。ユーザーがSQLデータベースに存在するかどうかを確認しようとすると、Windowsフォームアプリがクラッシュします
- 特定の条件が満たされている場合はチェックボックスをオンにしますExcelvba
- ajaxを使用してmvcの動的チェックボックスで複数のデータをチェックする方法
- ng-disabled AngularJSの場合はチェックボックスをオフにします
- C#でSeleniumを使用してチェックボックスコントロールをチェックできない
- チェックボックスチェックに基づいて条件を機能させる方法と、angular2リアクティブフォームを使用してチェックを外す方法
- Pythonサブプロセスを使用してWindowsにpipがインストールされているかどうかを確認します
作業サンプルをアップロードしましたここに
説明 :
すべてのコントロール(チェックボックスなど)のステータスを保持するステータスクラスと、それらが最後に保持していた値を作成できます。
次に、このクラスオブジェクトをsave csvフォームのコンストラクターに渡します。
以下のように。
また、このフォーム(FrmSaveCSV)のLoadイベントとClosingイベントをリッスンする必要があります。ここで、以前のステータスをロードし、現在のステータスを保存できます。以下のように:
さて、
アプリケーション全体を閉じながら、単に
serialize
することができます StatusClassのこのオブジェクト、およびde-serialize
ソフトウェアの起動時 それを元に戻し、それを使用してFrmSaveCSV
のコンストラクタに渡します 。このように、ソフトウェア全体を再起動しても、ステータスの保存は機能します。この質問を参照してください:
シリアル化可能なオブジェクトをファイルに保存/復元する方法は?
注意: ステータスクラスの新しいオブジェクトを作成していないことを確認し、この新しく作成したオブジェクトを
FrmSaveCSV
に渡します。 毎回。ステータスクラスのオブジェクトは常に同じでなければなりません。これを
FrmSaveCSV
と呼んでいる場合の意味Form1
から このように見えるはずです、