2012-04-14 2 views
1

В (Form1) у меня есть кнопка настройки, когда я нажимаю на него новую форму (Form2) показано, используя следующие строки кода:Как получить доступ к текстовому полю в Form3 из Form1?

private void b7_Click(object sender, EventArgs e) 
{ 
    Form3 frm = new Form3(); 
    frm.Show(); 

} 

В Form3, у меня есть 6 текстовых полей, и два , Сохранить и Отменить.

enter image description here

Что я пытаюсь сделать, это предоставить эту форму для пользователя, так он напечатает данные в необходимых форму, то он нажмите на кнопку Save Settings. В Form1 я хочу получить доступ к этим текстовым полям, чтобы получить их текущие значения (когда пользователь нажал кнопку «Сохранить настройки»). Я пытался добавить Form4 и назвал его (MiddleForm), я добавил 6 текстовых полей к нему, и в Form3 (форма на картинке выше) я писал эти строки:

private void button2_Click(object sender, EventArgs e) 
{ 
    MiddleForm mf = new MiddleForm(); 
    mf.textBox1.Text = keywrd1.Text; 
    mf.textBox2.Text = keywrd2.Text; 
    mf.textBox3.Text = keywrd3.Text; 
    mf.textBox4.Text = keywrd4.Text; 
    mf.textBox5.Text = keywrd5.Text; 

    mf.textBox1.Text = thelink.Text; 

    Close(); 


} 

затем я попытался получить доступ к значения, передаваемые в MiddleForm из Form1 (формы, где мне нужно использовать значение Textboxes), в Form1, я писал эти строки (только для отладки)

MiddleForm mf = new MiddleForm(); 

MessageBox.Show(mf.textBox1.Text); // to see whether there is something 

к сожалению, кажется, что ничего не передается М.Ф. .TextBox1

enter image description here

Как я могу вызвать текущие значения (Сохраненные с помощью кнопки настроек сохранения) Form3 Из Form1, чтобы использовать их в остальном коде.

Любая помощь, пожалуйста, при получении этого на работу?

+4

Ничего себе ... пожалуйста, укажите элементы интерфейса что-то значимое. Моя голова вращается, пытаясь следовать всем «form3», «button18_click» и т. Д. – McGarnagle

+0

Возможный дубликат [Как скопировать значение текстового поля из Form1 в Form2?] (Http://stackoverflow.com/questions/3384961/как к копии-а-текстовое поле значение, из-form1 к form2) –

ответ

3

Обнародовать свойства в Form3 как этот

public string[] Keys 
{ 
    get 
    { 
     return new string[] { tbKey1.Text, tbKey2.Text, tbKey3.Text, 
           tbKey4.Text, tbKey5.Text}; 
    } 
} 

public string Link { get { return tbLink.Text; } } 

От Form1 вы можете получить доступ к этим свойствам, как это

Form3 frm = new Form3(); 
if (frm.ShowDialog() == DialogResult.OK) { 
    string[] keys = frm.Keys; 
    string link = frm.Link; 
} 

Примечание: Важно, чтобы вы использовали ShowDialog, а не Show, так как Show не ждет, пока другая форма не будет закрыта. Кроме того, когда «Сохранить настройки» нажата в Form3, установить диалог результат

DialogResult = DialogResult.OK; 
Close(); 

, так что вы можете проверить его в Form1, как показано выше.

3

Вы должны сделать это:

var form = Form.ActiveForm as Form3; 
String myText = form.txtBoxName.Text; 
5

пасы 6 открытых свойств в вашем Form3 так:

public partial class Form3 : Form 
{ 
    public string Value1 
    { 
     get { return this.keywrd1.Text; } 
    } 

    public string Value2 
    { 
     get { return this.keywrd2.Text; } 
    } 

    ... 
} 

После вашего Form3 закрыт (но до расположены), вы можете получить доступ к текстовым значениям с помощью свойства. Как указано в другом ответе, используйте ShowDialog вместо Show и закройте Form3 внутри собственного кода.

private void b7_Click(object sender, EventArgs e) 
{ 
    Form3 frm = new Form3(); 
    frm.ShowDialog(); 
    string value1 = frm.Value1; 
    ... 
} 
3

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

public string TextValue1 { 
    get {return TextBox1.Text;} 
} 

Теперь вы можете использовать Form1.TextBox1 для извлечения значения строки из вашего Textbox.

3

Вы можете попробовать использовать ShowDialog это создаст ваш Form как окно модели Dialog, вы можете проверить DialogResult знать кастрированный баран данные были сохранены или Form был отменен.

i.e.

private void button2_Click(object sender, EventArgs e) 
{ 
    Form3 frm = new Form3(); 
    if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    { 
     savedSettings = frm.getTextBoxValues(); 
    } 
} 

Форма Form3

public partial class Form3 : Form 
{ 
    string[] textValues = new string[6]; 

    public Form3() 
    { 
     InitializeComponent(); 
    } 
    public string[] getTextBoxValues() 
    { 
     return textValues; 
    } 

    private void saveSettings_Click(object sender, EventArgs e) 
    { 
     DialogResult = System.Windows.Forms.DialogResult.OK; 
     textValues[0] = textBox1.Text; 
     textValues[1] = textBox2.Text; 
     textValues[2] = textBox3.Text; 
     textValues[3] = textBox4.Text; 
     textValues[4] = textBox5.Text; 
     textValues[5] = textBox6.Text; 
     this.Close(); 
    } 

    private void cancelSettings_Click(object sender, EventArgs e) 
    { 
     DialogResult = System.Windows.Forms.DialogResult.Cancel; 
     this.Close(); 
    } 
} 
Смежные вопросы