以已经打开的形式填充文本框

时间:2019-01-08 08:26:13

标签: c# winforms

请给我一些帮助。我做了很多研究,但没有找到适合我的答案。

考虑2种形式:MainWindow和Form2。 MainWindow包含一个文本框和一些显示信息的标签。 Form2还包含一个文本框,但旨在执行耗时的任务。在此form2中,我想将selectedItem的值(字符串)传递到MainWindow文本框,并在其上运行方法。

我可以通过加载或打开新的MainWindow来做到这一点,但是我不想这样做。可以同时(并且将同时)打开这两种表单。

请问我该怎么做? 让我知道我是否不准确。

3 个答案:

答案 0 :(得分:0)

在MainWindow中:

private void button1_Click_1(object sender, EventArgs e)
{
    var f = new Form2();
    f.Owner = this;
    f.ShowDialog(/*this*/);
}

在Form2中

(this.Owner as MainWindow).Text = textBox1.Text;

或致电:

(this.Owner as MainWindow).DoSomething();

答案 1 :(得分:0)

如果只有一个MainWindow,则只需建立指向MainWindow实例的静态链接即可。

MainWindow

    public static MainWindow Instance { get; private set; }

    public MainWindow()
    {
        InitializeComponent();

        Instance = this;
    }

Form2

    if ( MainWindow.Instance != null )
            MainWindow.Instance.textBox1.Text = "Hello";

当然,只有在同一线程中打开它们时,这才可能起作用。

答案 2 :(得分:0)

我终于找到了解决方法。

我遵循了一个视频教程,该教程完全适用于我的问题:https://www.youtube.com/watch?v=Tu07ubhxyfY

稍作调整后,效果很好。

非常感谢您的回答。