2

ボタンと同様に動作する Windows フォーム用のカスタム ユーザー コントロールを作成しました (このユーザー コントロールにデータを保存するため、ボタンだけを使用することは提案しないでください)。OnClick()イベントを発生させる方法を見つけます。私はいくつかのチュートリアルをふるいにかけ、サイトでいくつかの同様の質問を見ましたが、イベントを発生させることができないようです.後者ではない)

私のカスタムcontrol.csでは、

namespace MobCreator {
    public partial class MOBSample : UserControl {
        public MOBSample() {
           InitializeComponent();
        }
        protected override void OnMouseUp(MouseEventArgs e) {
           this.BorderStyle = BorderStyle.FixedSingle;
           base.OnMouseUp(e);
        }
        protected override void OnMouseDown(MouseEventArgs e) {
           this.BorderStyle = BorderStyle.Fixed3D;
           base.OnMouseDown(e);
        }
        public event EventHandler ButtonClick;
        private void OnButtonClick(object sender, EventArgs e) {
           // invoke UserControl event here
           if (this.ButtonClick != null) this.OnButtonClick(sender, e);
        }
    }
}

そして私のform.csでは、

private void MobCreatorForm_Load(object sender, EventArgs e) {
    UserControl1.ButtonClick += new EventHandler(this.CustomEvent_Handler);
}
private void CustomEvent_Handler(object sender, EventArgs e) {
    Console.WriteLine("Click");
}

ただし、プログラムを実行すると、コンソールは「クリック」を出力しません。

4

2 に答える 2

0

MSDN のこのリンクを確認してください。これは簡単なイベント チュートリアルです。シナリオに合わせて調整できるはずです。

一見すると、おそらく見逃しているのは、イベントのデリゲートです。

于 2013-05-24T07:01:44.257 に答える