1

私は外部アプリケーションで使用しているカスタムコントロールを持っています。 アプリケーションのランダムボタンのクリックイベントをバインドして、コントロールにデータを追加したいとします。カスタムボタンを外部ボタンにバインドする

これも可能ですか?基本的に私が思っていたのは、設計時に開発者がボタンコントロールをボタンコントロールに追加できるようにする、コントロール内のプロパティを作成することでした。アプリケーションが実行されると、ボタンに登録されたクリックは、カスタムコントロール内のメソッドに転送され、データが追加されます。

これは実行可能ですか?もしそうなら、誰かが正確に何をする必要があるのか​​説明できますか?

答えて

1

カスタムコントロールでタイプButtonのプロパティを作成できます。次に、カスタムコントロールのインスタンスをデザイナーに配置すると、そのプロパティに対して、フォームのすべてのButtonインスタンスを表示するドロップダウンが表示され、それらのインスタンスの1つを選択できます。これは、プロパティのセッターでボタンのイベントをクリックしてメソッドを追加するだけで十分です:

using System; 
using System.Windows.Forms; 
public class MyControl : UserControl 
{ 
    private Button addButton; 
    public Button AddButton 
    { 
     get { return addButton; } 
     set 
     { 
      if (addButton != null) 
       addButton.Click -= new EventHandler(addButton_Click); 

      addButton = value; 

      if (addButton != null) 
       addButton.Click += new EventHandler(addButton_Click); 
     } 
    } 

    void addButton_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show("Add Button Clicked!"); 
    } 
} 

あなたがAddButton財産のために、デザイナーの上に置くと、フォーム上のリスト0使用できるボタンが表示されます。それらのうちの1つを選択するだけで十分です。次に、必要な動作(ここでは例ではメッセージボックスを表示)がそのボタンのクリックイベントにアタッチされます。

enter image description here

+0

それをテストするために、それはコピーANSプロジェクト内のファイルにコードを貼り付けして、ソリューションを構築し、フォーム上のMyControl' 'のインスタンスを入れて、中にその' AddButton'のproprtyを見るには十分ですデザイナー。次に、いずれかのボタンを選択してプログラムを実行し、そのボタンをクリックします。 –

+0

が完璧です。 ありがとうございました! – Acidburn73

+0

歓迎します。許可はあなたの質問への回答に限られていません。すべての質問で良い答えに投票することができます。また、あなたの質問では、1つの回答だけを受け入れることができますが、受け入れられた回答を含むすべての良い回答に投票することができます。 - 私はあなたが参照した後、コメントをきれいに保つためにコメントを削除します:) –

関連する問題