Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C# Forms Вызов формы

34K
26 марта 2013 года
zna926
64 / / 23.03.2012
Имеются 3 формы f1, f2, f3. Из f1 можно вызвать f2, f3. Из f2 можно вызвать f3. Из f2 и f3 можно вывать f1. Но вызвать f2 из f3 никак не получается.
То же самое имеет место и для 4 форм, т.е. из последующей формы нельзя вызвать предыдущую, кроме f1.
Не пойму, где причина.
  • Можно код, или понятное объяснениеВам надо иметь доступ к одним формам из других форм?Используйте статическиепеременные от vitalii anonimisovich, 26 марта 2013 года
34K
27 марта 2013 года
zna926
64 / / 23.03.2012
Здравствуйте, vitalii anonimisovich!
Открыты 4 формы. Вот код вызова из формы1 формы 2. формы 3 и 4 вызываются аналогично, без проблем.
f2.Show();
f2.Owner=this;
this.Hide();
Вот код вызова формы 1 из форм 2, 3 и 4.
f1 = this.Owner as Form1;
f1.Show();
this.Hide();
1
27 марта 2013 года
kot_
7.3K / / 20.01.2000
Используйте пожалуйста средства форматирования кода, для того что бы отобразить что именно вы написали.
Во-вторых, на форуме телепатов нет. Сформулируйте свой вопрос таким образом что бы вам можно было помочь. И предварительно изучите - Области видимости
34K
28 марта 2013 года
zna926
64 / / 23.03.2012
Здравствуйте, kot_! С областью видимости переменных давно знаком. Суть не в этом.
Напишу чуть подробнее. Открыты 4 формы f1, f2 ....
Из каждой предыдущей формы можно вызвать последующую, вот код из f1 вызывается f2
f2.Show();
f2.Owner = this;
this.Hide(); Так же из f2 вызывается f3 ....и т.д.
Теперь код из последующей формы в предыдущую, например f4 вызывает f3
f3 = this.Owner as Form3;
f3.Show();
this.Hide(); и так для всех форм. Но вызвать предыдущую форму можно только в том случае, если она была вызвана предыдущей.
Если f2 вызвала f4, то из f4 можно вызвать только f2, для других форм компиллятор выдает ошибку. В этом проблема.
Буду признателен за помощь
1
28 марта 2013 года
kot_
7.3K / / 20.01.2000
И какую же ошибку выдает компилятор?
34K
28 марта 2013 года
zna926
64 / / 23.03.2012
Здравствуйте, kot_!
Уточняю: все формы имеют свойство public.
Компиллятор выдает сообщение на английском. В переводе это примерно так:
[Необработанное исключение типа " Система.NullreferenceException" в программе ..название exe файла.
Дальнейшая информация в объекной ссылке в требованиях объекта.]
Пробовал разобраться, но глухо...
Проще всего открать 3 формы и пробовать из формы 1 отррыть 3, а из 3 открыть 2. Ничего не получится.
Наилучшие пожелания
1
28 марта 2013 года
kot_
7.3K / / 20.01.2000
Не надо примерно. Приведите точное сообщение о ошибке. Что в этом сложного? Мне совершенно не нужны ваши упражнения в попытках перевода с английского.
Во-вторых - это не компилятор судя по всему выдает. Это ошибка на этапе выполнения программы - форма к которой вы пытаетесь обратиться - не существует или уже очищена сборщиком мусора.
34K
29 марта 2013 года
zna926
64 / / 23.03.2012
Уважаемый kot_!
Я привел перевод текста сообщения об ошибке (это перевел переводчик promt) с моей корректировкой падежей. Других данных у меня нет.
А ведь мой вопрос очень простой: как для случая 3 и более форм написать код,позволяющий, последующей форме вызвать любую из предыдущих.
Если знаете, напишите.
465
29 марта 2013 года
QWERYTY
595 / / 25.03.2012
"Система.NullreferenceException" а почему не перевели так - Система.НулеваяссылкаИсключение ?

В чём проблема выложить оригинал?
392
29 марта 2013 года
cronya
421 / / 03.01.2009
тут проблема в неумении выделять память:) или не знании что такое ссылка )
сдесь объявили

 
Код:
var f1 = this.Owner as Form1;
а инициализации нет :)

 
Код:
Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();
поэтому в f1 храниться ноль, а не область памяти которую нужно было выделить)
327
29 марта 2013 года
UserNet2008
748 / / 03.04.2010
Если актуально примерно так исключая Форму(Form) из вызываемой Формы(Form):
Код:
private void button1_Click(object sender, EventArgs e)
        {
            new Form1().Show();
        }
private void button2_Click(object sender, EventArgs e)
        {
            new Form2().Show();
        }
private void button3_Click(object sender, EventArgs e)
        {
            new Form3().Show();
        }
private void button4_Click(object sender, EventArgs e)
        {
            new Form4().Show();
        }
Если есть проблемы пишите.
1
30 марта 2013 года
kot_
7.3K / / 20.01.2000
Цитата: zna926
Уважаемый kot_!
Я привел перевод текста сообщения об ошибке (это перевел переводчик promt) с моей корректировкой падежей.


большинство здесь вполне владеет английским если не свободно - то вполне на приличном уровне. поэтому не нужно выступать в роли надмозга. По вопросу вам уже вполне ответили.

34K
30 марта 2013 года
zna926
64 / / 23.03.2012
Здравствуйте, уважаемый UserNet2008!
Если выражаться громкими словами, то Вы в одно мгновение ответили на вопрос, который меня занимал длительное время.
Я получал много рекомендаций, советов и нравоучений, но никто не подсказал такой простой и элегантный код.
Теперь я знаю, у кого можно получить конкретный ответ и, конечно, постараюсь не злоупотреблять.
Огромное спасибо и наилучшие пожелания.
Сам я живу в Германии, город Баден-Баден, если будет желание обменяемся EMail
327
30 марта 2013 года
UserNet2008
748 / / 03.04.2010
Вы правильно поймите, все сказанное выше по теме, было по делу.
Вы немец или говорите по немецки?
34K
31 марта 2013 года
zna926
64 / / 23.03.2012
Здравствуйте, UserNet2008!
Для обмена данными между формами я обычно использую коллекцию List.
В нее можно добавлять и читать данные из всех форм.
По вашему коду это можно сделать?. Ответьте просто да или нет. У меня с ходу не получилось.
Пытался ответить на Ваш вопрос, но текст был заблокирован (не по теме). Остается EMail.
С наилучшими пожеланими.
327
31 марта 2013 года
UserNet2008
748 / / 03.04.2010
Да можно.
326
31 марта 2013 года
sadovoya
757 / / 19.11.2005
Цитата:
Если выражаться громкими словами, то Вы в одно мгновение ответили на вопрос, который меня занимал длительное время.
Я получал много рекомендаций, советов и нравоучений, но никто не подсказал такой простой и элегантный код.


Читайте хорошие книги и будет вам счастье :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог