2016-01-21 5 views
1

У меня есть две формы. У первого есть одно текстовое поле. Вторая имеет таблицу данных devexpress. Я хочу этого: сначала нажмите кнопку и форма2 откроется. Если я щелкнул строку в сетке данных в форме2, это значение должно быть показано внутри текстового поля в форме1. (Form1 уже открыт.) ı m новичок. Спасибо за вашу помощь.C# - Передача данных между двумя формами

Form1 frm1 = new Form1(); 
frm1.textBox1.Text = gridView1.GetFocusedRowCellValue("ID").ToString(); 
frm1.Show(); 

Когда я это делаю, открывается новая форма. Я не хочу открывать новую форму. Форма 1 уже открыта. Я хочу добавить значения в текстовое поле.

+1

Вам необходимо разместить более релевантный код. Вы создаете новый Form1 каждый раз? Не следует ли передавать ссылку на Form1? А затем в Form2 do 'form1.textBox1 ...' –

ответ

0

Наконец, я решил проблему.

Application.OpenForms["form1"].Controls["textBox1"].Text = 
       gridView1.GetFocusedRowCellValue("ID").ToString(); 

Спасибо за помощь.

0

вы можете попробовать что-то вроде этого.

Когда вы нажмете на frm1.SimpleButton, эта функция будет называться show the Form2. На Form2 вы должны установить InnerProperty (из вашего datagrid?) A, когда вы закроете Form2, вы можете использовать это свойство.

private void SimpleButton_Click(object sender, EventArgs e) 
{ 
    using (Form2 frm = new Form2()) 
    { 
    frm.InnerProperty = "default text"; 
    DialogResult result = frm.ShowDialog(); 
    SimpleButton.Text = frm.InnerProperty; 
    } 
} 
2

Pass form1 в качестве ссылки на form2:

В вашей кнопки обработчик щелчка по форме 1, чтобы открыть вид 2

private void Button_Click(object sender, EventArgs e) 
{ 
    Form2 frm2 = new Form2(this); 
    frm2.Show(); 
} 

form2 код

private Form1 frm1; 
// constructor (pass frm1 as reference) 
public Form2(Form1 frm1) { 
    this.frm1 = frm1; 
} 

//put this in your event handler for a row click in the grid 
frm1.textBox1.Text = gridView1.GetFocusedRowCellValue("ID").ToString(); 
Смежные вопросы