2013-05-24 2 views
2

Я создал пользовательский элемент управления для формы окна, которая будет работать аналогично кнопке (и, пожалуйста, не предлагайте мне просто использовать кнопку, потому что я буду хранить данные у этого пользователя), но я не могу понять, как запустить событие OnClick(). Я просеял несколько учебных пособий и посмотрел на несколько похожих вопросов на сайте, но я не могу заставить это событие уйти - так что я либо делаю что-то неправильно, либо все отправляют неправильный код (надеюсь это не последнее)C# Form UserControl События 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"); 
} 

Однако, когда я запускаю программу моей консоль не выводит «Нажмите».

+0

OnButtonClick обрабатывает щелчок в вашей пользовательской форме какого контроля ?. Проблема должна заключаться в том, что щелчок на вашем usercontrol никогда не достигает частного void OnButtonClick (отправитель объекта, EventArgs e) –

+0

Код выглядит нормально - проблема должна быть в другом месте. Чтобы быть уверенным, что если вы установите точку останова на свой 'Console.WriteLine (..)' и отлаживаете код, он никогда не достигнет этой точки останова? –

+0

Правильно, он никогда не достигает точки останова. –

ответ

0

Check this link on MSDN: это простой учебник по событиям, вы должны уметь адаптировать его к своему сценарию.

При первом взгляде, что вы, вероятно, не хватает, является делегатом для вашего мероприятия.

+1

Ему не нужен делегат. он использует EventHandler –

0

Попробуйте

private void MobCreatorForm_Load(object sender, EventArgs e) 
{ 
    CustomEvent_Handler(null,null); 
} 

private void CustomEvent_Handler(object sender, EventArgs e) 
{ 
    Console.WriteLine("Click"); 
} 
+0

Я не уверен, что это должно сделать, кроме отображения «Щелчок» на консоли при загрузке формы? –

+0

Разве это не то, о чем вы просили? вы попросили запустить мероприятие. вы можете заменить Console.WriteLine («Клик»); с вашей логикой. –

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