2013-06-26 5 views
0

В C#, ım разработка приложения, но ı am gettıng некоторые ошибки ı получил две формы: мой проект, form1 и form2. , но когда ı хочет вызвать любое свойство объекта из Form2, ıt не отображается и не вызывается. Как я могу это сделать? Я пытался сделать, но dıdn't случаютсяC# Использование свойства TextBox из формы2

Существует текстовое поле на Form2, и я хочу использовать свое имущество из Form1

ниже код, как я хочу, чтобы это было ...

Messagebox.Show(Form2.textBox1.Text.ToString()); 
+0

У вас есть экземпляр Form2, который используется на Form1? – Jonesopolis

+0

Пропустить содержимое текстового поля как параметр в конструкторе вашей формы. –

+0

Это не должно даже компилироваться, поскольку текстовое поле не является статичным (по крайней мере, я надеюсь, что это не так, его не должно быть). Это также не должно быть общедоступным; вы должны добавить свойство, которое просто предоставляет текст. – Servy

ответ

1

Прежде всего, Form1 действительно ничего не должен знать о внутренних элементах управления Form2. Текстовое поле не должно быть общедоступным. Вместо того, чтобы создать свойство на Form2, который предоставляет информацию о том, что вам нужно:

public class Form2 : Form 
{ 
    private Textbox textbox1; 

    public string SomeText //TODO replace with meaningful name 
    { 
     get { return textbox1.Text; } 
    } 
} 

Далее, в какой-то момент вы, вероятно создание экземпляра вашей формы, чтобы показать его. Вы можете получить доступ к собственности через этот экземпляр:

Form2 childForm = new Form2(); 

childForm.ShowDialog(); 

MessageBox.Show(childForm.SomeText); 

В некоторых ситуациях вам может понадобиться для хранения экземпляра Form2 как поле экземпляра Form1, а не только локальной переменной:

private Form2 childForm = new Form2(); 

private void SomeMethod() 
{ 
    childForm.Show(); 
} 

private void SomeOtherMethod() 
{ 
    MessageBox.Show(childForm.SomeText); 
} 
+0

спасибо за помощь, все получилось хорошо, вы помогли мне –

0

Try Форма 1

public string _parameter; 
    public Form1() 
    { 
     InitializeComponent(); 

    } 

    public void form2_show_click(object sender, EventArgs e) 
    { 
     form2 frm = new form2(); 
     frm.ShowDialog(); 
     _parameter = frm.parameter; 
    } 

    form2 

    public string parameter; 
    public void form1_show_click(object sender, EventArgs e) 
    { 
     parameter = textBox1.Text; 
     this.DialogResult = System.Windows.Forms.DialogResult.OK; 
    }