繁体   English   中英

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

[英]Updating Form1's widgets by clicking Form2's button in Visual C# Windows Forms

我是Visual C#的新手,正在编写具有多种形式的GUI应用程序。 一种形式是主窗口,其余形式是某种选项窗口。 显示选项窗口时,我需要向其中加载一些数据(例如,窗口编辑框的字符串),然后对其进行编辑并在关闭选项窗口时返回到主窗口。 有什么简单的方法可以实现吗? 我已经找到了一些解决方案, 例如 ,或两种形式之间的c#事件处理 ,但我无法真正使其符合我的需求。 我当时正在考虑在构造函数中传递数据,但是如何取回它呢? 我发现了一些有关ShowDialog的信息,但是正如我所说的,我是C#的新手(昨天开始^^),不知道我是否可以使用它。

有什么想法吗?

我发现以下先前的答案,概述了将特定属性从一种形式发送到另一种形式:

将值从一种形式发送到另一种形式

using关键字还将确保正确清理表单,这是表单用法的链接(请双关语): http : //msdn.microsoft.com/zh-cn/library/vstudio/yh598w02。 ASPX

老实说,我也遇到过同样的问题,我不得不说,在进行讨论之前,我只是将父表单本身传递给孩子,然后以这种方式对其进行更改。 如:

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

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

不过,可能不是最好的约定,因为您可能不需要像孩子一样从父级那里访问太多内容。

谢谢大家,我想我终于明白了。 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM