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

Ваш аккаунт

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

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

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

Как передавать данные между формами 1 и 2 в C#

1.8K
25 февраля 2008 года
Serg_M
49 / / 09.08.2004
У меня есть две формы. Как передать из данные edit первой формы в edit второй формы.
489
25 февраля 2008 года
NeO_u
277 / / 11.10.2006
Когда передать? Куда передать?
Если при создании второй формы, то в конструкторе допиши переменные...
Если форма уже создана, то можно использовать функции, например:
 
Код:
public static setParam(string param1, string param2)
{
   this.param1 = param1;
   this.param2 = param2;
}
1.8K
25 февраля 2008 года
CilCatblack
251 / / 20.09.2007
Цитата: Serg_M
У меня есть две формы. Как передать из данные edit первой формы в edit второй формы.



Вар1:
Сделай компонент textBox1 -- public
Если у тебя студия 2005, то зайди в дизайнер(к пр. файл Form1.Disigner.cs) и поства public у textBox1
(подробней о замене смотри ниже)

Если студия 2002, то в файле Form1.cs найди строчку:

 
Код:
private System.Windows.Forms.TextBox textBox1;

измени на:
 
Код:
public System.Windows.Forms.TextBox textBox1;


Вар2:
Создай строковую переменную в превой форме, присвой ей значение едита(переведи в строку если нужно).
Создай объект первой формы во второй и присвой едиту перменную первой формы
489
25 февраля 2008 года
NeO_u
277 / / 11.10.2006
Цитата: CilCatblack
Вар1:
Сделай компонент textBox1 -- public
Если у тебя студия 2005, то зайди в дизайнер(к пр. файл Form1.Disigner.cs) и поства public у textBox1


Насколько я знаю, принцип ООП заключается в том, что работа с переменными осуществляется только через функции, а делать переменные Public, тем более, которые по умолчанию создаются private, неправильно.

Цитата: CilCatblack
Вар2:
Создай строковую переменную в превой форме, присвой ей значение едита(переведи в строку если нужно).
Создай объект первой формы во второй и присвой едиту перменную первой формы



Зачем так тяжело...ведь есть же конструктор формы, функции:-)

ЗЫ: Почитай ООП:-) А темболее, что C# позиционириуется как полностью ООП язык:-)

1.8K
25 февраля 2008 года
Serg_M
49 / / 09.08.2004
Извини за глупый вопрос, но как создать "объект первой формы во второй". У меня ситуация следующая. У меня на form1 есть объект DataGridView1 и при двойном клике открывается Form2 и данные активного Cell передаются в edit-ы второй формы. Вот как мне реализовать передачу данных???
З.Ы. Заранее весьма благодарен
713
25 февраля 2008 года
Ap0k
360 / / 13.03.2006
Цитата: NeO_u
Когда передать? Куда передать?
Если при создании второй формы, то в конструкторе допиши переменные...
Если форма уже создана, то можно использовать функции, например:
 
Код:
public static setParam(string param1, string param2)
{
   this.param1 = param1;
   this.param2 = param2;
}


Статические методы не могут получать доступ к экземплярным свойствам/методам/полям посредством [COLOR=blue]this[/COLOR][COLOR=black]! Дезинформация однако :) [/COLOR]

489
25 февраля 2008 года
NeO_u
277 / / 11.10.2006
Цитата: Ap0k
Статические методы не могут получать доступ к экземплярным свойствам/методам/полям посредством [COLOR=blue]this[/COLOR][COLOR=black]! Дезинформация однако :) [/COLOR]



Да, точно, сорри, обшибка вышла:-(

14K
25 февраля 2008 года
stimpi
100 / / 04.09.2007
ты же хранишь в DataGridView некий объект (по структуре), поэтому если ты еще не написал класс для этого объекта, то напиши и сделай как советует Троелсен открытое свойство для объекта в той форме в которую ты будешь передавать данные. Например, если у тебя хранится в таблице Имя, Фамилия, номер телефона , то логично создать объект Человек, как показано ниже.
Код:
public class Person
{
private string firstName;
private string lastName;
private string telephoneNumber;
...... //свойства и конструктор
}

public class MainForm: Form // твоя главная форма с дата гридом
{
// обработка двойного клика по датаГирду
public void dataGrid_DoubleClick(object sender, EventArgs args)
{
Person cP = new Person(bla - bla - bla); //считать данные с датаГрида и создать объект Персона
ChildModalForm mdF = new ChildModalForm();
mdF.SelectedPerson = сP;
mdf.ShowDialog();
}
}

public class ChildModalForm: Form // форма для отображения инфы с строки в датаГрид
{

private Person selectedPerson; //объект который будет передан с 1вой формы
public Person SelectedPerson // открытое свойство для объекта
{
get { return selectedPerson; }
set { selectedPerson = value; }
}

.......
}
В примере ты обрабатываешь двойной клик по датаГриду, вытаскиваешь данные с строки и записываешь их в Person. Далее создаешь новую форму, передаешь этот объект туда и отображаешь модально форму.
370
26 февраля 2008 года
koval
443 / / 29.08.2005
Еще один вариант. Делаем интерфейсик, и реализуем его в родительской форме
Код:
ISomeInterface
{
//Тут добавляем нужные нам свойства ивенты, и прочее
}

Form1:Form, ISomeInterface
{
//релизуем интерфейс
...............................
Form2 form = new Form2(this)
..........................................
}

Form2:Form
{
private m_SomeInterface;
public Form2(ISomeInterface someInterface)
{
this.m_SomeInterface = someInterface;
}
//и дальше юзаешь данные
}
1.8K
26 февраля 2008 года
Serg_M
49 / / 09.08.2004
Как посоветовал stimpi очень удобно, только класс лучше описать в классе формы, потому как если расположить его выше, то в FormDesign появляется ошибка и конструктор формы исчезает, а если его расположить в классе формы, то можно к нему обращаться через этот класс и все путем.

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