Как создать пользовательский элемент управления в C # из стандартных элементов управления? - PullRequest
2 голосов
/ 03 мая 2011


Я хочу создать в C # Visual Studio 2010 свой пользовательский элемент управления из стандартных элементов управления, который остается независимым во время разработки.
Проблема заключается в том, что при создании стандартного пользовательского элемента управления создается следующее:

public partial class MyUserControl: UserControl 
{
    public MyUserControl()
    {
        InitializeComponent();
    }
}

и я добавляю к нему 2 кнопки и 1 текстовое поле, они становятся частью UserControl.
Затем, когда элемент управления спроектирован и я добавляю его в форму, я могу переместить его, изменить размери т. д., но я не могу щелкнуть или выбрать Button1 или Button2 или TextBox1.
Также двойной щелчок по кнопке button1 не создает событие button1_click, но создает событие UserControl_Load.
Я хотел бы добиться эффекта, аналогичного элементу управления DataBindingNavigator, в котором можно нажимать каждый элемент.кнопка самостоятельно.

Я знаю, что могу сделать настройку общедоступного свойства / вернуть кнопки управления пользователем или текстовое поле, но они появятся в конструкторе, и не будет возможности их выбирать.

Как вы думаете, это возможно сделать со стандартными элементами управления?Если да, то как это сделать?
С уважением,
mj82

Ответы [ 4 ]

7 голосов
/ 03 мая 2011

Вы не можете сделать это, потому что это не имеет смысла делать.

Предположим, что вы можете делать то, что просите - тогда в форме вы сможете перемещать кнопки пользовательского элемента управления и т. Д. - по сути, разрабатывая пользовательский элемент управления на самой поверхности. Хорошо, но как насчет всех других форм, которые также имеют этот пользовательский элемент управления? Вот почему, когда вы удаляете пользовательский элемент управления, он фиксируется. Вы не проектируете пользовательский элемент управления для экземпляра формы, вы проектируете элемент управления, а затем он одинаков для каждой формы.

То же самое с нажатием на кнопку. Вы хотите создать обработчик события click, но в зависимости от того, что вы запрашиваете, это произойдет в форме. Но кнопка не в вашей форме, она находится на вашем пользовательском элементе управления, ее событие click должно обрабатываться в пользовательском элементе управления, а не в родительской форме.

Идея, лежащая в основе пользовательских элементов управления, заключается в том, что НЕ нужно делать то, что вы описываете. Это предварительно собранные строительные блоки.

DataBindinghNavigator - это не что иное, как набор инструментов. Если вы хотите такое поведение, просто используйте инструментальную полосу.

2 голосов
/ 03 мая 2011

Обычно вы помещаете свои обработчики для управляющих событий в свой UserControl.Если ваш UserControl должен уведомить страницу об определенных событиях, добавьте эти события в свой UserControl.

Если вам нужны отдельные элементы управления, которые запускают события независимо на вашей странице, то эти элементы управления, вероятно, не должны быть частью UserControl..

1 голос
/ 11 ноября 2012

Что вам нужно сделать, это создать триггеры событий в вашем элементе управления, а затем обработчики событий в вашей форме, чтобы обрабатывать действия, когда нажимается ваша кнопка_1 и т. Д. Вы не можете создавать события из представления дизайна формы, как оно есть.что-то, что должно быть встроено в элемент управления.

0 голосов
/ 18 января 2013

Если вы зашли так далеко, что вам нужно динамически манипулировать пользовательским интерфейсом с вашим кодом, попробуйте заглянуть в MVC. http://www.asp.net/mvc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...