Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2012, 15:47   #1
masterjada
 
Регистрация: 27.07.2012
Сообщений: 4
По умолчанию Перенос контролов с одной формы на другую

Столкнулся с такой проблемой, нужно перенести контралы с одной формы на вторую не теряя при этом функционала.
masterjada вне форума Ответить с цитированием
Старый 15.10.2012, 21:08   #2
stenl1
Форумчанин
 
Аватар для stenl1
 
Регистрация: 26.06.2009
Сообщений: 354
По умолчанию

Что именно интересует?
stenl1 вне форума Ответить с цитированием
Старый 15.10.2012, 21:12   #3
stenl1
Форумчанин
 
Аватар для stenl1
 
Регистрация: 26.06.2009
Сообщений: 354
По умолчанию

Вопрос

Как передать параметры между формами?

Ответ

1. Предположим из FormA по нажатию на кнопку открывается модальная форма FormB, в которой пользователь вводит какие-то данные,

которые после закрытия этой формы нужно передать в FormA. Для этого в FormB нужно реализовать соответствующие открытые

свойства, например, в FormB есть TextBox, куда пользователь вводит свое имя, затем это имя нужно при помощи свойства сделать

доступным извне FormB: в обработчике нажатия кнопки FormA:

Код:
1.FormB formB = new FormB();
2.formB.ShowDialog();
3.MessageBox.Show("First name is: " + formB.FirstName);

и свойство FirstName в FormB:

Код:
01.class FormB: Form
02.{
03.TextBox tbFirstName = new TextBox();
04.//...
05. 
06.public string FirstName
07.{
08.get
09.{
10.return tbFirstName.Text;
11.}
12.set
13.{
14.tbFirstName.Text = value;
15.}
16.}
17.//...
18.}
Если не нужно перед отображением формы инициализировать TextBox извне, то set accessor лучше убрать, чтобы не вводить в

заблуждение пользователя этого класса.

2. В случае, когда FormB открывается как немодальная, необходимо подписаться на ее событие Closed и в обработчике этого события считывать нужные свойства:

Код:
01.using System;
02.using System.Windows.Forms;
03.class FormA: Form
04.{
05.public FormA()
06.{
07.Button button = new Button();
08.button.Parent = this;
09.button.Click += new EventHandler(OnButtonClick);
10.}
11.void OnButtonClick(object sender, EventArgs e)
12.{
13.FormB formB = new FormB();
14.formB.Closed += new EventHandler(OnFormBClosed);
15.formB.Show();
16.}
17. 
18.void OnFormBClosed(object sender, EventArgs e)
19.{
20.FormB formB = (FormB)sender;
21.MessageBox.Show("First name is: " + formB.FirstName);
22.}
23.static void Main()
24.{
25.Application.Run(new FormA());
26.}
27.}
3. Если в FormB нужно обратиться к свойствам FormA, можно для отображения FormB использовать метод ShowDialog, принимающий параметр owner, и в качестве этого owner'a передать this (Me в VB.NET), т. е. ссылку на FormA. Затем, в коде FormB, при необходимости обратиться к свойствам/методам FormA следует использовать свойство Form.Owner. В примере ниже см. метод btShowAge_Click:

view source
print?
Код:
01.using System;
02.using System.Windows.Forms;
03.class FormA: Form
04.{
05.public FormA()
06.{
07.Button button = new Button();
08.button.Parent = this;
09.button.Click += new EventHandler(OnButtonClick);
10.Text = "FormA";
11.}
12.void OnButtonClick(object sender, EventArgs e)
13.{
14.FormB formB = new FormB();
15.//Передаем себя как owner'a
16.formB.ShowDialog(this);
17.}
18.int ageValue = 10;
19.//Свойство, которое будет считываться из FormB
20.public int Age
21.{
22.get
23.{
24.return ageValue;
25.}
26.set
27.{
28.ageValue = value;
29.}
30.}
31.static void Main()
32.{
33.Application.Run(new FormA());
34.}
35.}
36.class FormB: Form
37.{
38.public FormB()
39.{
40.Button btShowAge = new Button();
41.btShowAge.Click += new EventHandler(btShowAge_Click);
42.btShowAge.Parent = this;
43.Text = "FormB";
44.}
45.private void btShowAge_Click(object sender, EventArgs e)
46.{
47.int age = (Owner as FormA).Age;
48.MessageBox.Show(age.ToString());
49.}
50.}
Взято с >>>ссылка<<<

Последний раз редактировалось stenl1; 15.10.2012 в 21:15.
stenl1 вне форума Ответить с цитированием
Старый 16.10.2012, 17:24   #4
masterjada
 
Регистрация: 27.07.2012
Сообщений: 4
По умолчанию

Спасибочки.
masterjada вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос информации из одной ячейки в другую FLIBER Microsoft Office Excel 6 18.11.2012 23:38
Перенос данных из одной БД в другую demiancz БД в Delphi 1 11.03.2012 18:53
Перенос текста с одной страницы на другую asale HTML и CSS 0 07.02.2010 20:39
Перенос файла из одной папки в другую Amelie_L Microsoft Office Excel 6 29.01.2010 16:28
Перенос настроек с одной Дельфы в другую. Alex Cones Общие вопросы Delphi 4 01.01.2010 14:35