Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Dynamic load UserControl from dll 
:(
    Опции темы
klein
Дата 8.9.2011, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 30.5.2006
Где: Київ

Репутация: нет
Всего: нет



Привет. 
Как можна динамически создать (добавить на форму) контрол по dll файлу не привязанному к проекту ?
пример:
Код

Control c = new Control(Lib.dll);
 

Благодарю.
PM MAIL   Вверх
Voyager
Дата 12.9.2011, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 3
Всего: 18



asm = Assembly.Load("asm.dll")
control = Assembly.CreateInstance("MyControl")
form.Controls.Add(control)

PM   Вверх
klein
Дата 21.9.2011, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 30.5.2006
Где: Київ

Репутация: нет
Всего: нет



Код

Assembly asm = Assembly.Load("SelectionFormViewSample, Version=1.0.4282.25629, Culture=neutral, PublicKeyToken=null");
object o = asm.CreateInstance("UserControl1");
Control c = (Control)o;
this.Controls.Add(c);
c.Show();


ругается на строку c.Show() 
Код

System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.
   в Microsoft.ManagementConsole.Samples.SelectionControl.button1_Click(Object sender, EventArgs e) в C:\mmc\SelectionFormViewSample\SelectionControl.cs:строка 159


Это сообщение отредактировал(а) klein - 22.9.2011, 15:57
PM MAIL   Вверх
klein
Дата 22.9.2011, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 30.5.2006
Где: Київ

Репутация: нет
Всего: нет



...

Это сообщение отредактировал(а) klein - 22.9.2011, 15:58
PM MAIL   Вверх
jonie
Дата 23.9.2011, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



Цитата

Код

object o = asm.CreateInstance("UserControl1");


вы неверно передаете Type.FullName должно быть нечто вроде "MyNamespace.MyControlClassName, MyDllFIleNameWithoutExtension"


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Voyager
Дата 23.9.2011, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 3
Всего: 18



Да не нужно там MyDllFIleNameWithoutExtension, контрол создается из загруженной сборки. А вот путь к типу должен быть полным, навроде:

Код

object o = asm.CreateInstance("SelectionFormViewSample.UserControl1");

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.