2013-03-05 4 views
0

У меня есть кнопка из пользовательского элемента управления и хочу, чтобы она уведомила мою форму, когда она нажата. Вот как я это делаю. Это не работает. Может ли кто-нибудь сказать мне, что с ним не так?Eventhandler не срабатывает при нажатии кнопки элемента управления пользователя

В контроле пользователя

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"); 
    } 

Благодаря

+2

«Это не сработает» не совсем полезное описание. Это порождает ошибки или заканчивается бесконечным циклом? Первое, что вы должны проверить, - это то, почему ваша функция, поднимающая событие клика, сама регистрируется для одного и того же события. Это кажется неправильным. – nvoigt

+0

Хорошо, позвольте мне попробовать другие способы. Я действительно смущен при использовании события и обработчика. спасибо – user1874435

ответ

2

UserControlsButton Нажмите событие должно быть назначено Add_Click, я не думаю, что вы хотите назначить UserControlclicked Событие до Add_Click

Попробуйте удалить clicked += new EventHandler(Add_Click); из вашего UserControl и установить событие UserControlsButtonClick к Add_Click поэтому он будет вызывать clicked на вас Form

Пример:

UserControl:

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) 
    { 

    } 
} 
+0

Привет, Я использую тот же формат, что и вы, но он не работает. – user1874435

Смежные вопросы