Вернуться   Развлекательный портал CN.ru - Форум > Технологии > Программирование > Начинающим

Ответ
 
Опции темы
Старый 02.03.2012, 10:27 ↑ #1
Decoy2 Мужской
The Guard of Dark side
долгожитель эго-форума
 
Аватар для Decoy2
 
Регистрация: 10.07.2007
Адрес: Город несбывшихся надежд...
Возраст: 29
Сообщений: 376
Репутация: 78
Decoy2 на верном пути
По умолчанию C# Форма упакованная в dll

Короче есть у меня программка содержащая некоторую форму. Как мне её упаковать в dll и затем обратиться к showdialog этой формы? Можно даже показать на простом примере например на одной форме кнопка, она вызывает вторую форму упакованную в dll на которой банальная фраза например "Hello world" или что-то в этом духе Думаю будет самый простой и наглядно описывающий, все, что меня интересует, пример. Если кто поможет залейте куда-нибудь или скиньте мыло (antarass@mail.ru).
__________________
Decoy2 вне форума   Ответить с цитированием
Старый 03.03.2012, 20:16 ↑ #2
Decoy2 Мужской
The Guard of Dark side
долгожитель эго-форума
 
Аватар для Decoy2
 
Регистрация: 10.07.2007
Адрес: Город несбывшихся надежд...
Возраст: 29
Сообщений: 376
Репутация: 78
Decoy2 на верном пути
По умолчанию Re: C# Форма упакованная в dll

Вообще библиотеку слепил, а как вызвать форму оттуда не понимаю
__________________
Decoy2 вне форума   Ответить с цитированием
Старый 03.03.2012, 22:34 ↑ #3
Ser08 Мужской
абориген
 
Аватар для Ser08
 
Регистрация: 01.04.2008
Адрес: Снегири
Возраст: 28
Сообщений: 130
Ser08 отключил(а) отображение уровня репутации
По умолчанию Re: C# Форма упакованная в dll

Зайди в свойства проекта и подключи свою Dll

http://img24.imageshack.us/img24/8681/temppngqh.png

Потом пропиши в главном проекте: using Пространство имён Dll
Ser08 вне форума   Ответить с цитированием
Старый 04.03.2012, 08:53 ↑ #4
Decoy2 Мужской
The Guard of Dark side
долгожитель эго-форума
 
Аватар для Decoy2
 
Регистрация: 10.07.2007
Адрес: Город несбывшихся надежд...
Возраст: 29
Сообщений: 376
Репутация: 78
Decoy2 на верном пути
По умолчанию Re: C# Форма упакованная в dll

Цитата:
Сообщение от Ser08 Посмотреть сообщение
Зайди в свойства проекта и подключи свою Dll

http://img24.imageshack.us/img24/8681/temppngqh.png

Потом пропиши в главном проекте: using Пространство имён Dll
Я через assembly подключаю, так что с подключением проблем нет. Я вызвать оттуда форму не понимаю как.
__________________

Последний раз редактировалось Decoy2; 04.03.2012 в 08:57.
Decoy2 вне форума   Ответить с цитированием
Старый 04.03.2012, 14:57 ↑ #5
Decoy2 Мужской
The Guard of Dark side
долгожитель эго-форума
 
Аватар для Decoy2
 
Регистрация: 10.07.2007
Адрес: Город несбывшихся надежд...
Возраст: 29
Сообщений: 376
Репутация: 78
Decoy2 на верном пути
По умолчанию Re: C# Форма упакованная в dll

Цитата:
Сообщение от Murlakatam Посмотреть сообщение
Ну вот примерно как-то так. (Проект для VisualStudio2008Express)
В дальнейшем, мне будет необходимо получать имя dll динамически, поэтому посоветовали пока писать так с использованием пространства имен System.Reflection:

Цитата:
const string LIB = "SMART_DLL";

Assembly Library;
try
{
Library = Assembly.Load(LIB); // Подключение DLL
}
catch
{
// как тут отсутствие dll перехватить, я пока не знаю Даже не смотрел
}
__________________

Последний раз редактировалось Decoy2; 04.03.2012 в 15:42.
Decoy2 вне форума   Ответить с цитированием
Старый 07.03.2012, 17:42 ↑ #6
Decoy2 Мужской
The Guard of Dark side
долгожитель эго-форума
 
Аватар для Decoy2
 
Регистрация: 10.07.2007
Адрес: Город несбывшихся надежд...
Возраст: 29
Сообщений: 376
Репутация: 78
Decoy2 на верном пути
По умолчанию Re: C# Форма упакованная в dll

навоял, при помощи форумов вот так:

Цитата:
private void button2_Click(object sender, EventArgs e)
{
const String ASSEMBLY = "SMART";
const String FULL_NAME_OF_TYPE = "SMART.frmMain";
const String ERROR_ASSEMBLY_EXIST = "Сборка не найдена";
const String ERROR_TYPE_EXIST = FULL_NAME_OF_TYPE + " не найден";

Assembly ass;
try
{
ass = Assembly.Load(ASSEMBLY); // Подключение DLL

Type someClass;
try
{
someClass = ass.GetType(FULL_NAME_OF_TYPE); // Получение типа

Object instance = Activator.CreateInstance(someClass); // Создание объекта полученного типа

MethodInfo meth = someClass.GetMethod("ShowDialog", new Type[] {}, null); // Получение метода

meth.Invoke(instance, null); // Вызов полученного метода

}
catch (System.Exception exc)
{
// Перехватываем отсутствие соответствующего типа
MessageBox.Show(this, exc.ToString(), ERROR_TYPE_EXIST, MessageBoxButtons.OK, MessageBoxIcon.Error);
}

}
catch (System.Exception exc)
{
// Перехватываем отсутствие соответствующей DLL
MessageBox.Show(this, exc.ToString(), ERROR_ASSEMBLY_EXIST, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
__________________

Последний раз редактировалось Decoy2; 07.03.2012 в 18:11.
Decoy2 вне форума   Ответить с цитированием
Старый 07.03.2012, 20:44 ↑ #7
Ser08 Мужской
абориген
 
Аватар для Ser08
 
Регистрация: 01.04.2008
Адрес: Снегири
Возраст: 28
Сообщений: 130
Ser08 отключил(а) отображение уровня репутации
По умолчанию Re: C# Форма упакованная в dll

На самом деле всё НАМНОГО проще

http://rghost.ru/36897225
Ser08 вне форума   Ответить с цитированием
Старый 09.03.2012, 20:26 ↑ #8
Decoy2 Мужской
The Guard of Dark side
долгожитель эго-форума
 
Аватар для Decoy2
 
Регистрация: 10.07.2007
Адрес: Город несбывшихся надежд...
Возраст: 29
Сообщений: 376
Репутация: 78
Decoy2 на верном пути
По умолчанию Re: C# Форма упакованная в dll

Цитата:
Сообщение от Ser08 Посмотреть сообщение
На самом деле всё НАМНОГО проще

http://rghost.ru/36897225
допустим "НАМНОГО", только возможности для модернизации с целью дальнейшего динамического генерирования имени подключаемой dll и её подключения в Вашем примере, увы, нет. Ссылки меня не устраивают.
__________________
Decoy2 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Текущее время: 15:55. Часовой пояс GMT +6.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot

ВКонтактeTwitterFacebook
Хотите связаться с нами? Напишите письмо, и мы обязательно ответим.