0

イベントを作成し、フォームで処理します

ユーザー制御コード:

public event EventHandler ButtonClick;
private void button1_Click(object sender, EventArgs e)
    {
        if (this.ButtonClick != null)
            this.ButtonClick(sender, e);        
    }

フォームコード:

private Usercontrol1 sampleUserControl = new Usercontrol1();
public Form1()
    {
        InitializeComponent();
        sampleUserControl.ButtonClick += new EventHandler(this.UserControl_ButtonClick);
    }
private void UserControl_ButtonClick(object sender, EventArgs e)
    {
        //sample event stuff
        this.Close();
        Form2 F2 = new Form2();
        F2.Show();
    }

しかし、イベントは発生しません。問題は何ですか?

4

3 に答える 3

2
 private Usercontrol1 sampleUserControl = new Usercontrol1();

どのボタンをクリックしたかは明確ではありませんが、そのユーザー コントロールのボタンではありません。フォームの Controls コレクションに追加したことがないため、表示されません。修理:

public Form1()
{
    InitializeComponent();
    this.Controls.Add(sampleUserControl);
    sampleUserControl.BringToFront();
    sampleUserControl.ButtonClick += new EventHandler(this.UserControl_ButtonClick);
}

フォームにこれらのユーザー コントロールが2 つある可能性があります。おそらく「Usercontrol11」という名前で、以前にフォームにドロップしたもの。そして、コードに追加したもの。デザイナを使用するか、コードを記述するかのどちらかで、両方を行うと、このような問題が発生します。

于 2013-07-07T10:21:24.933 に答える
1

私はあなたのコードを取得してコンパイルし、イベントがすぐに発生したので、私の答えは、メソッドが何らかの理由でクリックされたボタンのイベントに接続されていないため、呼び出さButtonClickれたメソッドで作成および発生したイベントです。button1_Click isn't

メソッドが呼び出され、メソッドが呼び出された時点でイベントButtonClickが登録されていることを確認してくださいbutton1_Click。メソッドが呼び出されなかった場合、メソッドは登録されていませんbutton1_Click。そうしないと、他のアイテムに登録されている可能性があります

于 2013-07-07T07:58:36.033 に答える