0

ユーザーコントロールのボタンがあり、クリックされたときにフォームに通知するようにしたい。これが私のやり方です。それは動作しません。誰かがそれの何が悪いのか教えてもらえますか?

ユーザーコントロールで

    public event EventHandler clicked;
    public string items;
    InitializedData data = new InitializedData();
    ArrayList list = new ArrayList();
    public DataInput()
    {
        InitializeComponent();
        clicked+= new EventHandler(Add_Click);

    }


    public void Add_Click(object sender, EventArgs e)
    {
        items = textBox1.Text.PadRight(15) + textBox2.Text.PadRight(15) + textBox3.Text.PadRight(15);

        if (clicked != null)
        {
            clicked(this, e);
        }
    }

Form1で

    UserControl dataInput= new UserControl();
    public void OnChanged(){
        dataInput.clicked += Notify;
        MessageBox.Show("testing");
    }

    public void Notify(Object sender, EventArgs e)
    {
        MessageBox.Show("FIRE");
    }

ありがとう

4

1 に答える 1

2

UserControls ButtonClick イベントは に割り当てる必要がありますが、イベントをAdd_Clickに割り当てたくないと思いますUserControl clickedAdd_Click

clicked += new EventHandler(Add_Click);UserControl から削除して、UserControls Button Clickイベントを設定して、Add_ClickトリガーclickedされるようにしてくださいForm

例:

ユーザーコントロール:

public partial class UserControl1 : UserControl
{
    public event EventHandler clicked;

    public UserControl1()
    {
        InitializeComponent();

        // your button
        this.button1.Click += new System.EventHandler(this.Add_Click);
    }

    public void Add_Click(object sender, EventArgs e)
    {
        if (clicked != null)
        {
           // This will fire the click event to anyone listening
            clicked(this, e);
        }
    }
}

形:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        // your usercontrol
        userControl11.clicked += userControl11_clicked;
    }

    void userControl11_clicked(object sender, EventArgs e)
    {

    }
}
于 2013-03-05T07:49:10.860 に答える