Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Visual C#: Как запихнуть две формы в проект?


Автор: Human 18.6.2004, 16:59
Я только начал осваивать Visual Studio, в частности язык C#. И у меня возник вопрос по поводу форм. Я добавил в проект вторую форму, и теперь не могу ее вызвать. Т. е. при нажатии на кнопку на первой, должна появляться вторая форма, но я так и не понял как это осушествить.
Буду оч благодарен если кто-нибудь разяснит это скромному ламеру rolleyes.gif

Автор: Kurt 18.6.2004, 17:13
Вставляешь в обработчик клика:
Код

Form2 frm=new Form2();
frm.Show();
return;


где Form2 - твоя вторая форма.
Если хочешь показать форму в модальном режиме:
Код

Form2 frm=new Form2();
frm.ShowDialog();
return;


Все.
Кстати, если 2-я форма где-то еще понадобится в обработчиках 1-й событий формы, можешь сделать переменную frm глобальной..

Удачного освоения! smile.gif

Автор: Human 18.6.2004, 18:04
спасибо за совет!
я попробовал, и вот что получил.

если использовать
Form2 frm = new Form2()
то он начинает ругаться на Form2.

если я использую просто
Form frm = new Form()
frm.Show();
то все работает без сбоев,
НО: появляется совершенно пустая новая форма, а у меня была задача вывести уже скомпонованную готовую отдельную форму, которая уже внедрена в проект. как быть?

Автор: human 18.6.2004, 18:40
я еще попробовал кое-что и у меня получилось.
использовал это:
Код

Form about = new about();
about.Show();

где about - как раз та вторая форма.
работает и что самое главное - показывается уже готовая и вложенная в проект форма.
теперь еще один вопрос: как при появлении второй формы как бы заблокировать первую, т.е. пока вторую не закроешь доступа к первой что бы небыло.

Автор: stab 18.6.2004, 19:15
Код

about.Show();


надо заменить на:

Код

about.ShowDialog(this);

Автор: Kurt 18.6.2004, 21:17
human, погоди. У тебя класс 2-й формы назывался about?
Блин, я ж тебе говорил:
Цитата

где Form2 - твоя вторая форма

Не надо понимать буквально! Я ж не знал имя твоей 2-й формы! Надо было подставить вместо Form2 ТВОЕ имя класса!
Кстати,
Цитата

Form about = new about();

Как я понимаю, ты тут создаешь переменную, совпадающую по имени с типом. Это нежелательно.
Попробуй так:
Код

about frm = new about();
frm.Show();
..


cully, и Show() и ShowDialog() можно вызывать без параметров.
Тогда окном-родителем считается текущее окно.

Автор: human 19.6.2004, 00:00
Kurt, cully, большое спасибо, разобрался!

Автор: stab 19.6.2004, 01:26
еще такой совет: при использовании ShowDialog, после того как форма больше не нужна, надо обязательно вызвать метод Dispose, т.е.

Код
Form2 frm = new Form2();

frm.ShowDialog();

frm.Dispose();


т.к. при использовании ShowDialog форма не освобождается, а просто прячется и все созданные копии формы висят в памяти.

Автор: human 19.6.2004, 13:06
Цитата(cully @ 19.6.2004, 01:26)
т.к. при использовании ShowDialog форма не освобождается, а просто прячется и все созданные копии формы висят в памяти.

угумс, учту.

Автор: human 19.6.2004, 23:51
У меня возник еще один важный (наверно только для меня) вопрос:
сделал я програмку малюсенькую, скомпилировал ее и она у меня прекрасно работает.
но что нужно сделать чтобы она работала и у других?! smile.gif
а то получается, я прошу ее протестить — а она ни у кого не запускается. возможно нужно привязать какие-то библиотеки, или еще что-то сделать. как быть?

Автор: stab 20.6.2004, 07:28
Нужно что бы на компьютере стоял .net framework. Взять дистрибутив можно либо на диске с VS, либо на сайте microsoft -- http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&displaylang=en

Автор: human 20.6.2004, 09:22
т.е. все приложения которые я создаю при помощи Visual Studio .Net (не выжно на каком языке) для запуска будут требовать .net framework?

Автор: Kurt 20.6.2004, 10:12
Ну да.
Также как для Java нужна JavaVM.
Тока следует учесть, что M$ теперь везде будет встраивать Framework в свои Windows (до след. умопомрачитеьной идеи, конечно).
Кроме того, существуют специальные Майкрософтовские пакеты для обеспечения работоспособности дотНЕТ-приложения на "обычной" машине.

Автор: human 20.6.2004, 11:00
Цитата(Kurt @ 20.6.2004, 10:12)
Ну да.
Также как для Java нужна JavaVM.
Тока следует учесть, что M$ теперь везде будет встраивать Framework в свои Windows (до след. умопомрачитеьной идеи, конечно).
Кроме того, существуют специальные Майкрософтовские пакеты для обеспечения работоспособности дотНЕТ-приложения на "обычной" машине.

спасибо, теперь все ясно smile.gif
и еще, нет ли у тебя линка где про обеспечение работы приложений .нет на обычных машинах можно почитать?

Автор: Softaz 17.7.2006, 22:55
Вот статья про создание инсталляционных пакетов и распространении .NET
http://apro.ladia.ru/csharp/setup_win.zip 

Автор: Exception 17.7.2006, 23:07
Цитата(Kurt @  18.6.2004,  18:13 Найти цитируемый пост)
можешь сделать переменную frm глобальной..


Глобальные переменные -- зло. Лучше сделать специаьлный класс для хранения ссылок.


human, на Вашем месте я бы почитал книжки. Видно, что Вы совсем не понимаете, о чём говорите. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)