C# Forms Вызов формы
То же самое имеет место и для 4 форм, т.е. из последующей формы нельзя вызвать предыдущую, кроме f1.
Не пойму, где причина.
- Можно код, или понятное объяснениеВам надо иметь доступ к одним формам из других форм?Используйте статическиепеременные от vitalii anonimisovich, 26 марта 2013 года
Открыты 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();
Во-вторых, на форуме телепатов нет. Сформулируйте свой вопрос таким образом что бы вам можно было помочь. И предварительно изучите - Области видимости
Напишу чуть подробнее. Открыты 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, для других форм компиллятор выдает ошибку. В этом проблема.
Буду признателен за помощь
И какую же ошибку выдает компилятор?
Уточняю: все формы имеют свойство public.
Компиллятор выдает сообщение на английском. В переводе это примерно так:
[Необработанное исключение типа " Система.NullreferenceException" в программе ..название exe файла.
Дальнейшая информация в объекной ссылке в требованиях объекта.]
Пробовал разобраться, но глухо...
Проще всего открать 3 формы и пробовать из формы 1 отррыть 3, а из 3 открыть 2. Ничего не получится.
Наилучшие пожелания
Во-вторых - это не компилятор судя по всему выдает. Это ошибка на этапе выполнения программы - форма к которой вы пытаетесь обратиться - не существует или уже очищена сборщиком мусора.
Я привел перевод текста сообщения об ошибке (это перевел переводчик promt) с моей корректировкой падежей. Других данных у меня нет.
А ведь мой вопрос очень простой: как для случая 3 и более форм написать код,позволяющий, последующей форме вызвать любую из предыдущих.
Если знаете, напишите.
В чём проблема выложить оригинал?
сдесь объявили
Код:
var f1 = this.Owner as Form1;
Код:
Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();
f2.Owner = this;
f2.Show();
Код:
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();
}
{
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();
}
Цитата: zna926
Уважаемый kot_!
Я привел перевод текста сообщения об ошибке (это перевел переводчик promt) с моей корректировкой падежей.
Я привел перевод текста сообщения об ошибке (это перевел переводчик promt) с моей корректировкой падежей.
большинство здесь вполне владеет английским если не свободно - то вполне на приличном уровне. поэтому не нужно выступать в роли надмозга. По вопросу вам уже вполне ответили.
Если выражаться громкими словами, то Вы в одно мгновение ответили на вопрос, который меня занимал длительное время.
Я получал много рекомендаций, советов и нравоучений, но никто не подсказал такой простой и элегантный код.
Теперь я знаю, у кого можно получить конкретный ответ и, конечно, постараюсь не злоупотреблять.
Огромное спасибо и наилучшие пожелания.
Сам я живу в Германии, город Баден-Баден, если будет желание обменяемся EMail
Вы немец или говорите по немецки?
Для обмена данными между формами я обычно использую коллекцию List.
В нее можно добавлять и читать данные из всех форм.
По вашему коду это можно сделать?. Ответьте просто да или нет. У меня с ходу не получилось.
Пытался ответить на Ваш вопрос, но текст был заблокирован (не по теме). Остается EMail.
С наилучшими пожеланими.
Да можно.
Если выражаться громкими словами, то Вы в одно мгновение ответили на вопрос, который меня занимал длительное время.
Я получал много рекомендаций, советов и нравоучений, но никто не подсказал такой простой и элегантный код.
Я получал много рекомендаций, советов и нравоучений, но никто не подсказал такой простой и элегантный код.
Читайте хорошие книги и будет вам счастье :)