2016-03-08 79 views
-2

我有一个主窗体,其中有一个文本框和一个按钮。然后我有一个单一的按钮的第二种形式。在程序启动时,MainForm被初始化,当我点击按钮时,第二个窗体出现(ShowDialog())仍然保持打开MainForm。C#传递窗体之间的数据没有ShowDialog()

所以我有这两种形式相互打开。我想要的是,当我点击按钮时,按钮会向MainForm发送一个字符串。 MainForm将获取文本并将其显示在文本框中。但是我希望立即做出改变 - 不必隐藏和再次显示MainForm。当按下第二个窗体上的按钮时,有点像刷新它。

我该怎么做?

注意:将发送到MainForm的文本以第二种形式进行声明很重要。 (在我的程序中,文本在第二个表单级别上动态地更改)

+1

看到答案在此链接:http://stackoverflow.com/questions/280579/how-do-i-pass-a-value-from-a-child-back-to-the-parent-表格 – Harsh

+0

等一下,为什么你有第二种形式,如果你想在'Form1'中显示它 –

回答

0

如果我正确理解,您需要在winform中创建一个属性。 例如:

public partial class frmLogin : Form 
    { 
     public bool LoggedIn 
     { 
      get { return loggedIn; } 
     } 

     public frmLogin() 
     { 

      InitializeComponent(); 


     } 
} 

// Now, in your forms, you can do. 
frmLogin frm = new frmLogin(); 

frm.ShowDialog(); 

var value = frm.LoggedIn; 
1

尝试发送的文本框为第二形态的构造,第二种形式,当你给点击按钮,改变文本框的Text属性,它会出现,如果会被更新因为他们指的是同一个地方。

public partial class Form1 : Form 
{ 
    public Form1(TextBox txt) 
    { 
     InitializeComponent(); 

     this.txt = txt; 
    } 

    //variable 
    TextBox txt = null; 

    private void button1_Click(object sender, EventArgs e) 
    { 
     txt.Text = "Your text"; 
    } 
}