обмен параметров между формами
От: Аноним  
Дата: 03.11.04 04:45
Оценка:
у меня есть 2 формы — Form1, Form2 (Form1-parent, Form2-child)

Form2 вызывается из Form1:
Form2 form2=new Form2();
form2.MdiParent = this;
form2.Show ();
parent form содержит textBox1 и переменную для получения/изменения его значения:
private string var1{
get{return tetBox1.Text;}
set {textBox1.Text=value;}
}


по идее я его могу изменить в Form2 так:
form1.var1="Hello";
В Form2 я прописал Form1:
public Form1 form1;
Но создавать его видимо не надо? (form1 — parent ведь уже создан)
выдается ошибка: object reference not set to an instance of an object

а если выполнить перед установкой параметра: form1=new Form1(), то ошибки не будет но
ничего и не измениться.
Вобщем тут проблема видимости ..
Что нужно изменить?




данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: обмен параметров между формами
От: Slider_spb Россия  
Дата: 03.11.04 07:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>а если выполнить перед установкой параметра: form1=new Form1(), то ошибки не будет но

правильно будет form1= this.ParentForm
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 07:26
Оценка:
В Form1.cs:

Form2 form2=new Form2();
form2.MdiParent = this;
form2.Show ();
...
public string var1{
get{return tetBox1.Text;}
set {textBox1.Text=value;}
}

В Form2.cs:

public Form1 form1; //public здесь не обязателен

//А в каком-нибудь методе (например в Load):

form1=(Form1)this.MdiParent;
form1.var1="Hello";


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 07:49
Оценка:
Посмотрите здесь
Sergey Zhiharev,
MCSD.NET,
Digital Design


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 08:57
Оценка:
Niswn,
попробовал сделать так:
//form1, form2- это childs
form1.cs:
public string val1{
get{return str;}

}
string str="Hello";

в form2.cs:
form1=(Form1)this.MdiParent;
string tmp1=form1.val1;
MessageBox.Show(tmp1);

выводит:
specified cast is not valid, на строке form1=(Form1)this.MdiParent;

Я еще пробовал так:
foreach (Form frm in this.MdiParent.MdiChildren)
if (frm is Form1)
{
con=((Form1) frm).con1;//пытаюсь получить конекшн из другой формы

str=((Form1) frm).str; // пытаюсь получить строку
}
в данном случае выдается оибка что con1, str не assigned
------------------
что касается приведенной ссылки Торса — то она полностью пишет то о чем я уже написал
и она не отвечает на вопрос как между 2мя child обмениваться данными




данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 09:21
Оценка:
>что касается приведенной ссылки Торса
Будьте внимательней — Тореро

>она полностью пишет то о чем я уже написал и она не отвечает на вопрос как между 2мя child обмениваться данными
Вовсе нет... В данном FAQ нет абсолютно ничего из того, о чем Вы писали. И про 2ух child'ов речи не шло.

Теперь по сути... Все что Вам на самоv деле нужно — получить ссылку на нужное окно...
>//form1, form2- это childs
form1.cs:
public string val1{
get{return str;}

}
string str="Hello";

в form2.cs:
form1=(Form1)this.MdiParent;
string tmp1=form1.val1;
MessageBox.Show(tmp1);

выводит:
specified cast is not valid, на строке form1=(Form1)this.MdiParent;

Конечно, теперь же они оба child'ы...

>Я еще пробовал так:
foreach (Form frm in this.MdiParent.MdiChildren)
if (frm is Form1)
{
con=((Form1) frm).con1;//пытаюсь получить конекшн из другой формы

str=((Form1) frm).str; // пытаюсь получить строку
}
Покажите как Вы объявляете con1 и str.
Sergey Zhiharev,
MCSD.NET,
Digital Design


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 09:39
Оценка:
>Будьте внимательней — Тореро
Извините, описАлся.
string str="Hello";
в form2.cs:
form1=(Form1)this.MdiParent;
string tmp1=form1.val1;
MessageBox.Show(tmp1);
выводит:
specified cast is not valid, на строке form1=(Form1)this.MdiParent;
Конечно, теперь же они оба child'ы...

запутался я уже. наверное изначально не совсем правильно объяснил, что и где.
есть 3 формы: form1 (это перент). form2, form3 — childs
form1 создала 2 кида успешно.

form2 содержит:
---------------
public string val1{
get{return str_con;}
}
str_con="....";
con1=....;//connection работает. Он на этой форме и конектится

теперь, form3 должна получить con1 из форм2, а также строку str_con
form3 содержит:
----------------
foreach (Form frm in this.MdiParent.MdiChildren)
if (frm is Form2)
{
con=((Form2) frm).con1;
str=((Form2) frm).str_con;
}






данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 10:50
Оценка:
вот так объявил коннекшн.
public OracleConnection con1;




данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 10:54
Оценка:
здесь даже ругается не на конекшн, а на строку:
str=((Form2) frm).str;


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 11:03
Оценка:
>здесь даже ругается не на конекшн, а на строку:
str=((Form2) frm).str;

Скорее всего str просто не инициализирован. Посмотрите в дебаггере.
Sergey Zhiharev,
MCSD.NET,
Digital Design


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 11:12
Оценка:
как же он может быть неинициализированным?
форма2 содержит textBox, у которого задается строка, которая сразу же используется для соединения с БД.
если бы она была неинициализированна,то соединения бы не было.
Что касается передачи параметров, то в форм 3 я могу получить connection из form2, но скажем строку str которая мне нужна или значение из textBox1.Text не могу получить. Пишет: use of unassigned local variable.

может быть влияет то, что я форму 2 прячу методом hide? но с другой стороны если бы это влияло, то почему коннекшн удалось получить а строковую переменную или значение контрола нет?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 11:17
Оценка:
>как же он может быть неинициализированным?
форма2 содержит textBox, у которого задается строка, которая сразу же используется для соединения с БД.
если бы она была неинициализированна,то соединения бы не было.
Что касается передачи параметров, то в форм 3 я могу получить connection из form2, но скажем строку str которая мне нужна или значение из textBox1.Text не могу получить. Пишет: use of unassigned local variable.

И все-таки попробуйте в дебеггере встать на это место и посмотреть, что произойдет. Что у Вас такое str_con? Свойство или просто поле в форме? И какое отношение оно имеет к textBox.
Sergey Zhiharev,
MCSD.NET,
Digital Design


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 11:27
Оценка:
не str_conn , textBox1.Text.
т.е. форма2 содержит :

public string val1{
get{return textBox1.Text;}
}



но как только попытаюсь получить в форме 3 значение val1:
string s1=((Form2) frm).textBox1.Text;
то выдается вышеуказанная ошибка.


если же попытаюсь получить таким способом:
string s1=form2.val1; то не тоже ругается...





данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 11:31
Оценка:
кстати, посмотрел в дебагере — значения в форме2 в поле val1 , textBox1.Text есть. а вот в форме3 , в str (туда куда пытаюсь присвоить значение из формы2) пишет null.
присваиваю так: str=((Form2) frm).val1;


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 11:35
Оценка:
не так написал немного...
дебагер показывает , что в str кладет значение то которое нужно , но как только я его пытаюсь использовать:
например вывесте через MessageBox, или использовать эту строкувую переменную в строковых манипуляциях, то выдает, что
use of unassigned local variable str


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 11:55
Оценка:
Так сразу и написал бы. Если переменная определяется в условии, что-то типа:
string s;
if(условие)
{
s="sdsdsdsdsd";
}

string s2 =s; //ошибка, переменная возможно не инициализирована

Объявляй переменные так:
string s="";



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
обмен параметров между формами
От: Аноним  
Дата: 03.11.04 12:04
Оценка:
Спасибо!! заработала!


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: обмен параметров между формами
От: mikehac  
Дата: 23.04.05 14:13
Оценка:
Здравствуйте, Niswn, Вы писали:

N> В Form1.cs:


N>Form2 form2=new Form2();

N>form2.MdiParent = this;
N>form2.Show ();
N>...
N>public string var1{
N> get{return tetBox1.Text;}
N> set {textBox1.Text=value;}
N>}

N>В Form2.cs:


N>public Form1 form1; //public здесь не обязателен


N>//А в каком-нибудь методе (например в Load):


N>form1=(Form1)this.MdiParent;

N>form1.var1="Hello";

N>
данное сообщение получено с www.gotdotnet.ru

N>ссылка на оригинальное сообщение


а можно то же самое,но когда form2 не сын form1?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.