2013-10-03 2 views
1

Я думал, что C# сложно. Попробуйте отправить вопрос в stackoverflow.Связь с/usercontrol в tabcontrol в форме

У меня есть список и кнопка в usercontrol, сама по себе на вкладке tabcontrol, сама по форме. Мне нужно заполнить список из формы при нажатии кнопки.

форма> TabControl> TabPage> UserControl> ListBox & кнопка

Итак, как вы сообщаете форму, что глубоко под землей кнопка была нажата, а затем заполнить ListBox из формы (или вызовите UserControl из формы для заполнения списка)?

Спасибо, ребята.

+0

Просто добавьте свое собственное публичное событие в пользовательский элемент управления. Огоньте его в обработчике события Click. –

+0

Это, я сделал. Проблема, которую я все еще имею, заключается в том, как зафиксировать событие в форме. Кажется, у меня что-то не хватает. – Lara

ответ

3

Предполагая, что ваш вопрос касается WinForms.

Для получения уведомлений: Экспозиция события на userControl и связать его с событием кнопки, форма знает, что это дети.

public class MyUserControl { 
    private Button myButton; 
    public event EventHandler MyControlButtonClicked; 

    public MyUserControl() { 
     ... 
     myButton.Click += OnMyButtonClicked; 
    } 

    private void OnMyButtonClicked(object sender, EventArgs arguments) { 
     if (MyControlButtonClicked != null) { 
      MyControlButtonClicked(this, arguments); 
     } 
    } 
} 

В вашей форме:

public class MyForm { 
    private MyUserControl userControl; 

    public MyForm() { 
    ... 
    userControl.MyControlButtonClicked += OnUserControlButtonClicked; 
    } 

    private void OnUserControlButtonClicked(object sender, EventArgs arguments) { 
     // handle the button click here 
    } 
} 

Для населения: Та же картина, использовать пользовательский элемент управления в качестве посредника. Добавьте публичный метод в userControl, который будет делать популяцию listBox и вызывать его из вашей формы.

+0

Да, это WinForms. Не могли бы вы разместить примерный код в части уведомления? Хотя я понимаю концепцию, я пробовал и терпел неудачу. – Lara

+0

Я добавил фрагмент ответа. Надеюсь, это ясно – YM67549

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