2016-06-29 9 views
0

私はC#でクラスを複数回インスタンス化することができます。フォームがインスタンス化されるたびに、そのテキストボックスはすべて読み取り専用です。私はまた、edit_buttonを持つMenubarを持っています。起こるべきことは何ですか。 1つのフォームにフォーカスし、メニューバーのedit_buttonを押すと、その特定のフォームの読み取り専用のテキストボックスが編集可能になりますが、そのフォームにのみフォーカスが当てられます。フォーカスのない残りの部分は影響を受けません。私はそれについて行く方法がわからないので、私はサンプルコードを与えることはできません。手伝ってくれますか?ありがとうございました。フォームの複数のインスタンスから1つのインスタンスを操作する

+0

あなたはクラス変数(staticフィールド)を持っていない限りは、それはWindowsフォームでの通常の動作です:

はもしそうなら、あなたの編集ボタンのクリックハンドラでは、あなたはこのような何かを行うことができます。他のフォームには影響しません。あなたのコードを私たちに教えてください。 –

+0

私はそれを行う方法がわからないので、まだコードがありません。あなたが私を指摘することができれば、私はおそらくコードを作成することができます。私が持っているものは、保存、編集、テキストボックスの読み取り専用属性をtrueにするなどの無関係な動作のコードです。それは私が問題を抱えているものとは関係ありません。 – Ibanez1408

答えて

1

あなたの説明があれば、メニューバーはすべての複数のフォームから分離されているようです...これはMDIアプリケーションですか?

var activeForm = this.ActiveMdiChild; // assuming 'this' is the parent MDI form 
foreach(var control in activeForm.Controls) { 
    // do something here (enable textboxes) 
} 
+0

MDIです。このNailbiteを試してみます。 – Ibanez1408

+0

私はこれが唯一の問題であると確信しています。私のテキストボックスはあるグループと別のパネルにあるので、コードは私のためには機能しませんでした。ありがとうございました。 – Ibanez1408

+0

これは、コントロール階層に関連する別の問題です。クイックアンドダーティは、テキストボックスを1つずつ手動で有効にするフォーム内のパブリックメソッドを作成することで、(This.ActiveMdiChild as MyForm).EnableTextBoxes()のように呼び出すことができます。しかし、より堅牢なソリューションは、フォームのコントロール階層を横断してすべてのテキストボックスを取得することです。 – Nailbite

関連する問題