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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hide/Show Формы, MyForm1.Show() из Form3 КАК? 
V
    Опции темы
okaton
Дата 4.7.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте. Такой вот вопрос.
В проекте 3 формы с 3 батонами.

Батон 1 Формы: Form2 MyForm2 = new Form2; this.Hide(); MyForm2.Show();
Батон 2 Формы: Form3 MyForm3 = new Form3; this.Hide(); MyForm3.Show();

Открывается 3 форма. Как мне вызвать/показать (но не создавать новый) экземпляр 1 и 2 формы из формы 3?
PM MAIL   Вверх
okaton
Дата 5.7.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Выдается ошибка NullReferenceException was unhandled

Где скрывается ошибка, или я вообще неправ? 

public Form1() 
{ 
InitializeComponent(); 
} 

Form2 MyForm2 = new Form2(); 
Form3 MyForm3 = new Form3(); 

private void button1_Click(object sender, EventArgs e) 
{ 
MyForm2.ShowDialog(); 
MyForm3.MyForm2 = MyForm2; 
} 


public Form3() 
{ 
InitializeComponent(); 
} 

public Form2 MyForm2; 

private void button1_Click(object sender, EventArgs e) 
{ 

MyForm2.Show(); 
}
PM MAIL   Вверх
SpaceSpace
Дата 6.7.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Предлагаю тебе супер извращенный способ.
Но как раз то, что тебе нужно.
1. Изменяеш статический класс, где живет метод Main()
static class Program получается как - бы хранилищем ссылок на формы
Код

    static class Program
    {
        // Это твои формы, статические причем
        public static Form1 form1;
        public static Form2 form2;
        public static Form3 form3;
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            // создаешь экземпляры форм
            form2 = new Form2();
            form3 = new Form3();
            // самое хитрое - запускаеш form1 :)
            Application.Run(form1 = new Form1());
        }
    }


2. в каждой из форм делаеш магические действия на событиях кнопок
       привожу все обработчики кнопок вместе, сам положи куда следует
  
Код

      // это событие 1 формы
 private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
            Program.form2.Show();
        }
        // это событие 2 формы
        private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
            Program.form3.Show();
        }
        // это событие 3 формы
        private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
            Program.form1.Show();
        }


ВСЁ! 
теперь будет прыгать между формами как ты и хотел.
сначала запускается первая - из неё на вторую - из второй на третью - из третьеё на превую снова smile
хоть обкликася. всё для тебя smile 

Это сообщение отредактировал(а) SpaceSpace - 6.7.2007, 09:10


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
okaton
Дата 6.7.2007, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



SpaceSpace Спасибо тебе огромное, в т.ч. и за пример, буду пользоваться! А то на меня нни кто внимание не обращает:(
Пример рабочий, то что нужно. Единственный вопрос изменения в program.cs коректны? В смысле это допускаются как стандартные действия или мы обходим какие-либо правила.
PM MAIL   Вверх
SpaceSpace
Дата 6.7.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ты ж программер. владыка мира. делать можешь всё! 
smile

В принципе, я думаю,
ты сам поймешь каким способом пойти.

По своему опыту говорю - самое главное - не спотыкаться и не затаиваться, а то желание пропадает.
Ты реализуй функционал, программу свою допиши.
А то как формы скачут - это дело (для тебя) второстепенное.

Что касаемо реализации, которую тебе предложил.
статических форм НЕ делают.
Но, ты можеш с таким же успехом сделать обычный нестатический контейнер и там хранить нестатические экземпляры форм.

Это сообщение отредактировал(а) SpaceSpace - 6.7.2007, 10:03


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
okaton
Дата 6.7.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо еще раз!

Это сообщение отредактировал(а) okaton - 6.7.2007, 10:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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