通过单击Visual C#Windows窗体中的Form2按钮更新Form1的小部件

时间:2013-11-18 17:37:28

标签: c# winforms

我是Visual C#的新手,我正在编写一个包含多种表单的GUI应用程序。一种形式是主窗口,其余形式是某种选项窗口。当显示一个选项窗口时,我需要加载一些数据(例如一个字符串到窗口的编辑框),然后编辑它并在关闭选项窗口时返回主窗口。有什么简单的方法可以实现吗? 我找到了一些解决方案likec# event handling between two forms,但我无法真正符合我的需求。我在考虑在构造函数中传递数据,但是如何将其恢复?我发现了一些关于ShowDialog的东西,但正如我所说,我是C#的新手(昨天开始^^)并且不知道我是否可以使用它。

请问任何想法?

2 个答案:

答案 0 :(得分:1)

我找到了以下上一个答案,其中概述了从一种形式向另一种形式发送特定属性:

Send values from one form to another form

使用关键字还可以确保正确清理表单,这里是指向用法的链接(原谅双关语......):{{3 }}

说实话,我遇到了同样的问题,我必须说在讨论之前我会将父表单本身传递给子表单并以这种方式更改它。如:

ChildForm child = new ChildForm(this);  //from the parent

public ChildForm(ParentForm parent)
{
    this.parent = parent;
}

可能不是最好的约定,因为你可能不需要从父母那里获得那么多的孩子。

答案 1 :(得分:0)

谢谢你们,我想我终于明白了。 Idle_Mind,你的想法在我看来最简单,所以我决定使用它。如果其他人有这样的问题,这就是我编码的内容:

在主窗口中:单击按钮时,会出现一个新窗体;关闭它后,label1显示以该格式输入的文本

private void Button1_Click(object sender, EventArgs e)
    {
        LoadDataForm loaddata = new LoadDataForm("initial value");
        if (loaddata.ShowDialog() == DialogResult.OK)
        {
            label1.Text = loaddata.textBox1.Text;
        }
    }

在加载数据表单中:在表单的构造函数中传递的参数出现在textBox1中; textBox1的Modifiers属性必须修改为“public”

public LoadDataForm(string initvalue)
    {
        InitializeComponent();
        textBox1.Text = initvalue;
    }
private void ApplyButton_Click(object sender, EventArgs e)
    {
        DialogResult = DialogResult.OK;
    }

此致 mopsiok