2011-12-13 10 views
1

私はこれを行う方法は考えているForm2フォームでform1からイベントを呼び出す方法は?

Form1からtabControl1_SelectedIndexChangedを呼び出す必要があります。

+0

フォームとコントロールの名前を付ける必要があります。 – SLaks

+0

あなたはイベントを "呼び出す"か、Form2のイベントを "リッスン"しようとしていますか? – LarsTech

答えて

6

他のクラスのイベントを呼び出さないでください。そのアイデアは、イベントがサブスクライブ/サブスクライブ解除の動作を公開することです。実装ではを選択してを選択すると、イベントを発生させるメソッドが公開されますが、使用するコントロールがSelectedIndexChangedイベントのメソッドを公開していない場合は強制できませんに。

あなたが達成しようとしていることは明確ではありませんが、代わりに適切なタブをプログラムで選択することができます。 Form1からForm2に直接タブコントロールを公開するのではなく、プレースホルダの名前だけを使用してフォームの意味のある名前を付けることをお勧めします。Form1のメソッドを公開して適切なタブの選択を行うときれいになります。それはForm1で実行するより意味のある操作です - 実装の詳細に大きく依存しません。一方、MVPパターン(またはあなたに最も適したもの)を使用して、よりクリーンなデザインを作成することができます。

+0

私はそれをやって、うまくいきました、ありがとうジョン再び! 'parentForm.tabControl1_SelectedIndexChanged(null、null);' –

+1

@TheMask:イベントハンドラをプライベートメソッドとして保持したほうが一般に良いでしょうが、 *外部から呼ばれている名前付きのメソッド。 –

3

必要なロジックを実行する最初の形式でパブリックメソッドを作成する必要があります。

次に、最初のフォームのインスタンスを2番目のフォームに渡し、そのインスタンスでメソッドを呼び出します。

+0

私はそれをしました。今、私は 'form1'のpublic memberとして' form1.tabControl1_SelectedIndexChanged'を 'form2'で持っています。 と私はできます: 'parentForm.tabControl1_SelectedIndexChanged(??、null)'私の質問は今です - publicControlとしてtabControl1コントロールを宣言することは可能ですか? –

2

Jonが言いましたように、あなたは公開してはいけません。これまでに2つのフォームの作成と前後のやりとりを明示的に行ったサンプルをいくつか紹介します。 Check these out

関連する問題