2013-05-09 4 views
0

Я работаю над этим проектом около часа, и я застрял. У меня есть 4 формы, но релевантно только последние 3. В форме 2 я использую:Передача информации между формами

this.Visible = false; 
    Form3 Form3 = new Form3(); 
    Form3.Show(); 

Чтобы создать и показать форму 3. Форма Form3 также получил текстовое поле, которое пусто, и я хочу передать эту информацию на этикетке в Form4. В форме 3 я использую тот же треску, как и в форме 2, чтобы сделать Форму 3.

Я попробовал несколько вещей, и искал на форумах, но ничего не похоже на работу ...

 lblN2.Text = Form3.txtf.Text; 

I хотите перенести текст, который пользователь записывает в текстовое поле (txtf) в Form3, на пустую метку (lblN2) в Form4.

Помощь будет оценена!

+0

Что вы пытаетесь достичь (отправить значение формы от 2 до 3 или что?) ?? – progrrammer

+1

У вас здесь нет очень четкого вопроса. – tnw

+0

Кажется, что Form4 отсутствует в вашем заявлении: lblN2.Text = Form3.txtf.Text; –

ответ

1

Попробуйте что-то вроде этого (код в классе form3):

Form4 frm4 = new Form4(); 
    frm4.lblN2.Text = this.txtf.Text; 
frm4.Show(); 

Alternative бы модифицировать метод конструктора в Form4 принимать строковый параметр и вызовите его следующим образом:

Form4 frm4 = new Form4(this.txtf.Text); 
    frm4.Show(); 
+0

Спасибо, друг, отлично работает! :) – user2367396

0

Если вы хотите передать что-то form4, то вы можете создать публичную переменную на form4, то вы можете сделать что-то подобное на Form3:

this.hide(); 
form4 form4 = new form4(); 
form4.variable = textbox1.text; 
form4.show(); 

затем на form4_load вы можете:

textbox2.text = variable; 
+0

Я не уверен, что «публичные» данные - лучший способ пойти. Как правило, по крайней мере, как я узнал об этом, у вас есть все основания для публикации данных. Для передачи данных между формами, вероятно, недостаточно хорошо, учитывая, что существуют другие решения. – ChiefTwoPencils

1

На основании вашей информации, я думаю, вы хотите отправить значение form2 в form3, вы можете изменить конструктор (как решение), чтобы отправить значение form2 в form3. Вот пример.

Для формы 2:

this.Visible = false; 
Form3 frm = new Form3(value-you-want-to-send); 
frm.Show(); 

в Form3 вы должны иметь конструктор принимает аргумент, чтобы получить значение из Form2 AS:

public void Form3(value-you-want-to-receive) 
{ 
    //set the label text to the string received 
} 
0

На Форме 3 ...

private void button1_Click(object sender, EventArgs e) 
    { 
     Form4 frm = new Form4(textBox1.Text); 
     frm.Show(); 
    } 

По форме 4 ...

public partial class Form4 : Form 
{ 
    private string _valueFromOtherForm; 
    public Form4() 
    { 
     InitializeComponent(); 
    } 

    public Form4(string valuePassed) 
    { 
     InitializeComponent(); 
     _valueFromOtherForm = valuePassed; 
    } 

    private void Form4_Load(object sender, EventArgs e) 
    { 
     label1.Text = _valueFromOtherForm; 
    } 
} 

}

0

В Form4, написать метод, как:

public void ReceiveTextFromAnotherForm(string theText) 
{ 
    //set the label text to the string received 
} 

В Form3, сделайте следующее:

Form4 theForm4 = new Form4(); 
theForm4.ReceiveTextFromAnotherForm(this.txtf.Text); 
theForm4.Show(); 
1

Вы, вероятно, следует указать Form4 в своем заявлении, как:

Form4 _frm4 = new Form4(); 
_frm4.lblN2.Text = Form3.txtf.Text 
+0

Ошибка, которую я получаю на данный момент: Ссылка на объект требуется для нестатического поля, метода или свойства. Для формы 3. – user2367396

+1

Вы должны создать объект Form4 так же, как вы создали Form3, т. Е .: Form4 _frm4 = new Form4(); –