Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 3

Как осуществить переход между формами

23.11.2012, 16:03. Показов 6608. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть написанная программа на С#. Ввод исходных данных осуществляется с консоли. Теперь я хочу оформить ввод исходных данных через Windows Form. Попыталась это сделать, но возникло непонимание:как создать три формы для ввода данных, чтобы
1)открылось первое окно, ввели данные, нажали кнопку "далее"
2)открылось второе окно, но при этом первое закрывалось, нажали кнопку "далее"
3)открылось третье окно, но при этом первое закрывалось второе окно, и после нажатия в третьем окне кнопки "расчет" могли считаться данные со всех трех окон
При моей попытке при нажатие кнопки "далее" окна не закрываются и каким образом сделать, чтобы в третьем окне считывались данные с двух предыдущих окон
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2012, 16:03
Ответы с готовыми решениями:

Как осуществить переход между формами
Можно ли как то запомнить с какой формы был совершен переход. у меня есть 3 формы 1-я и 2-я форма обращаются к 3-ей...и как сделать так...

Как реализовать переход между формами?
Нашёл лишь такую реализацию перехода меж формами, но она далеко не лучшая, т.к. моё приложение не на весь экран, если из первоначального...

Как сделать переход между формами?
Подскажите как сделать так что при нажатии на ЛКМ и движении курсора в лево открылась другая форма. Сделать что то похожее на слайд иконок...

15
10 / 10 / 3
Регистрация: 28.08.2012
Сообщений: 57
23.11.2012, 16:07
можно сделать невидимыми элементы первого окна, и видимыми элементы второго. Т.е. не три окна по очереди прогружать, а играть с видимостью элементов.
Бред, но рабочий вариант )
1
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 3
23.11.2012, 16:14  [ТС]
Т.е. либо делать невидимыми либо больше никак, чтобы все последовательно открывалось при нажатие кнопок?
0
10 / 10 / 3
Регистрация: 28.08.2012
Сообщений: 57
23.11.2012, 16:29
Почему никак сразу. Можно сделать последовательно несколько форм и с ними играться.
Например сделать глобальные переменные и заполнять их из каждой формы. Но тоже сомневаюсь что это лучший вариант.
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
23.11.2012, 17:05
Ответы на 7 самых частых вопросов по WinForms

и если возникают такие вопросы, то лучше пока работать с одной формой, передача данных между ними может быть реализована двумя способами:
1) подписка одной формы на события второй, с последующим вызывом последних
2) добавление форам полей класса других форм, и передача в конструкторах указателей на оные.
0
10 / 10 / 3
Регистрация: 28.08.2012
Сообщений: 57
23.11.2012, 17:16
вот как это заработало у меня:
Есть три формы с textbox и button.
Запускаем, вводим в первые текстбокс значение, жмем кнопку, первая закрывается, значение запоминается, открывается вторая форма, там тоже самое. И так все три формы.
Принцип описан, на красоту не претендую, сам новичок )
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
 
    public partial class Form1 : Form
    {
        settings sett = new settings();
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            this.Visible=false;
            sett.ss1 = textBox1.Text;
            Form2 f = new Form2();
            f.Visible = true;
            f.Closed+=f_closed;
        }
        private void f_closed(object sender, EventArgs e)
        {
            Form2 send = sender as Form2;
            sett.ss2 = send.ss;
            send.Visible = false;
 
            Form3 f3 = new Form3();
            f3.Visible = true;
            f3.Closed += f3_closed;
 
        }
        private void f3_closed(object sender, EventArgs e)
        {
            Form3 send = sender as Form3;
            sett.ss3 = send.ss;
            send.Visible = false;
            
        }
    }
    public class settings
    {
        public string ss1;
        public string ss2;
        public string ss3;
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            ss = textBox1.Text;
            this.Close();
        }
        public string ss { get; set; }
        }
 
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            ss = textBox1.Text;
            this.Close();
        }
        public string ss { get; set; }
    }
}
0
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 3
23.11.2012, 18:12  [ТС]
Ответы на 7 самых частых вопросов по WinForms
После написание данной темы увидела данный раздел.Буду разбираться. Необходимо именно три формы создать хоть я и новичок, т.к. этого требует задание
0
0 / 0 / 0
Регистрация: 22.03.2017
Сообщений: 95
24.04.2017, 08:03
Есть две формы. Из родительской формы передаются данные на текстбоксы. После окончания работ надо возвратиться на родительскую форму. Данные из дочерней формы не надо передавать в родительскую форму. По моим кодам при возврате из дочерней формы все данные родительской форме исчезают. Виной всему наверно следующее изложение кода:
C#
1
2
3
4
5
6
 private void btnForm1_Click(object sender, EventArgs e)
        {
            Form1 f1 = new Form1();
            f1.Show();
            this.Hide();
        }
Прошу подсказать.7 правил п.2 этого случая нет. В интернете везде передача данных и т.д.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
24.04.2017, 08:07
Цитата Сообщение от ifhbg Посмотреть сообщение
В интернете везде передача данных
Истинная правда. Весь интернет на этом построен.
Цитата Сообщение от ifhbg Посмотреть сообщение
Из родительской формы передаются данные на текстбоксы.
Где это видно? Ты создаёшь ещё один экземпляр Form1.
0
0 / 0 / 0
Регистрация: 22.03.2017
Сообщений: 95
24.04.2017, 08:18
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
           
        }private void btnForm1_Click(object sender, EventArgs e)
        {
            Form1 f1 = new Form1();
            f1.Show();
            this.Hide();
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
24.04.2017, 08:34
ifhbg, и что?

Добавлено через 1 минуту
Где здесь передача данных?
0
0 / 0 / 0
Регистрация: 22.03.2017
Сообщений: 95
24.04.2017, 08:39
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 public partial class Form1 : Form
    {
  
        public Form1()
        {
            InitializeComponent();
        
 
    }
       
 
        private void selectbtn_Click_1(object sender, EventArgs e)
        {
            Form2 f3 = new Form2();
            f3.textBox1.Text = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
            f3.textBox2.Text = this.dataGridView1.CurrentRow.Cells[1].Value.ToString();
            f3.textBox3.Text = this.dataGridView1.CurrentRow.Cells[2].Value.ToString();
            f3.textBox4.Text = this.dataGridView1.CurrentRow.Cells[3].Value.ToString();
            f3.textBox5.Text = this.dataGridView1.CurrentRow.Cells[4].Value.ToString();
            f3.ShowDialog();
            this.Hide();
            
        }
вот так передаю данные с родительского на дочернюю форму.

Добавлено через 56 секунд
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
           
        }private void btnForm1_Click(object sender, EventArgs e)
        {
            Form1 f1 = new Form1();
            f1.Show();
            this.Hide();
вот так из дочерней возвращаюсь в родительскую форму и обнаруживаю чистую родительскую форму
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
24.04.2017, 09:48
ifhbg, зачем же для перехода на старую форму ты создаешь новый её экземпляр?
0
0 / 0 / 0
Регистрация: 22.03.2017
Сообщений: 95
24.04.2017, 10:14
Знал бы ответ не задавал бы вопрос.Поэтому и спрашиваю)))
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
24.04.2017, 11:42
ifhbg, тебе можно поступить гораздо проще:
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void selectbtn_Click_1(object sender, EventArgs e)
{
    Form2 f3 = new Form2();
    f3.textBox1.Text = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
    f3.textBox2.Text = this.dataGridView1.CurrentRow.Cells[1].Value.ToString();
    f3.textBox3.Text = this.dataGridView1.CurrentRow.Cells[2].Value.ToString();
    f3.textBox4.Text = this.dataGridView1.CurrentRow.Cells[3].Value.ToString();
    f3.textBox5.Text = this.dataGridView1.CurrentRow.Cells[4].Value.ToString();
    this.Hide();
    f3.ShowDialog();
    this.Show();
}
И теперь, чтобы вернуться, нужно лишь закрыть вторую форму:
C#
1
2
3
4
private void btnForm1_Click(object sender, EventArgs e)
{
    Close();
}
1
0 / 0 / 0
Регистрация: 22.03.2017
Сообщений: 95
24.04.2017, 13:09
Как всегда все простое гениально.)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2017, 13:09
Помогаю со студенческими работами здесь

Как запрограммировать переход между формами в шарпе?
Учусь писать оконные приложения на шарпе. Есть только опыт консольки на плюсах. Задача такая: сделать интерфейс как на картинках во...

Как сделать свободный переход между тремя формами
Приветствую) Есть 3 формы, на каждой по две кнопки, и нужно сделать свободный переход с любой на любую форму(1-2,1-3,2-3,3-2,2-1,3-1),...

Переход между формами
Здравствуйте! У меня возникла такая ошибка... Есть код открытия формы при нажатии на кнопку Form2 f2 = new Form2(); f2.Show(); ...

Переход между формами
Нажатием на клавишу закрыть текущую форму(Form1) и открыть новую(Form2) private void button1_Click(object sender, EventArgs e) ...

Переход между формами в проекте
Подскажите как можно решить данную проблему? Имеется проект, собранный из двух (test -проект для тестирования , osn - навигация,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru