Получить Usercontrols из папки управления - PullRequest
1 голос
/ 25 января 2012

Необходимо динамически загружать пользовательские элементы управления в мою форму.У меня есть меню и имя пользователя для пользовательских элементов управления при выборе пунктов меню.

private void MenuItemClickHandler(object sender, EventArgs e)
        {
            ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
            MessageBox.Show(clickedItem.Name);
        }

Как загрузить пользовательский элемент управления в этом случае?В Asp.Net для таких случаев я использовал LoadControl («path / name.ascx»).Я не нашел аналога в winforms.

Ответы [ 3 ]

2 голосов
/ 25 января 2012

Если у вас есть имя элемента управления, и элементы управления уже скомпилированы в вашем приложении, вы можете использовать Activator.CreateInstance для создания экземпляра элемента управления из имени типа.Создав экземпляр элемента управления, вы можете добавить его в форму.Должно работать что-то вроде кода ниже:

private void MenuItemClickHandler(object sender, EventArgs e)
{
    ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender;
    var t = Type.GetType("MyNamespace." + clickedItem.Name));
    var control = (UserControl)Activator.CreateInstance(t);
    this.Controls.Add(control);    
}
0 голосов
/ 25 января 2012

Вы можете добавить экземпляр в текущую форму, используя метод Controls.Add () формы или панель, которую вы используете в своем приложении.

    public partial class UseUserControl : Form
    {
        public UseUserControl()
        {
            InitializeComponent();
            //Create the user control.
            TempUserControl userControl = new TempUserControl();
            //Add the location to the control.
            userControl.Location = new Point( 40, 40 );
            //Add the control to the current form.
            this.Controls.Add( userControl );
        }
    }
0 голосов
/ 25 января 2012

Это должно быть просто.

this.Controls.Add(clickedItem)

Но перед этим вам нужно указать местоположение clickedItem (т.е. где в форме он будет отображаться)

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