Загрузите WindowsFormsControlLibrary DLL с диска, затем добавьте к элементам управления, C # - PullRequest
2 голосов
/ 16 октября 2019

Как я могу загрузить WindowsFormsControlLibrary UserControl с диска и затем программно добавить его в список элементов управления в форме Windows во время выполнения?

Я хочу начать только с имени файла.

Поддельный код ниже иллюстрирует. Чтобы было ясно, я не хочу добавлять его в набор инструментов Visual Studio и использовать его во время разработки. Вместо этого я хочу загрузить его во время выполнения и вставить в форму Windows , ничего не зная об этом, кроме имени файла .

    if (File.Exists("SomeUserControl.dll"))
    {
        // Load SomeUserControl.dll from disk
        // Do something to make it a control
        // ...
        UserControl SomeUserControl = new UserControl();
        Controls.Add(SomeUserControl);
    }

1 Ответ

1 голос
/ 17 октября 2019

В сети много примеров и вопросов здесь, поэтому .
Очень короткий пример:

        // load your dll
        System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom("SomeUserControl.dll");

        // to get the right type use namespace.controlname
        Type type = assembly.GetType("MyControlLibrary.MyUserCtl");

        // create an instance
        object instanceOfMyType = Activator.CreateInstance(type);

        // do something with Control
        Control ctrl = instanceOfMyType as Control;
        if (ctrl != null)
        {
            this.Controls.Add(ctrl);
            ctrl.Dock = DockStyle.Bottom;
        }

и не забудьте обернуть это внутри try / catch

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