C#在没有ShowDialog()的表单之间传递数据

时间:2016-03-08 23:11:08

标签: c# windows winforms visual-studio c#-4.0

我有一个MainForm,里面有一个Textbox和一个Button。然后我有一个带有一个按钮的第二个表单。在程序启动时,MainForm被初始化,当我点击按钮时,第二个表单显示(ShowDialog())仍然保持打开MainForm。

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

我该怎么做?

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

2 个答案:

答案 0 :(得分:1)

尝试将TextBox发送到第二种形式和第二种形式的构造函数,当您单击按钮时,更改TextBox的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";
    }
}

答案 1 :(得分: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;