【发布时间】:2017-10-07 03:57:31
【问题描述】:
我有两个表单(Form1 和 Form2),我想在 Form1 上的进程完成后在它们之间传递一个字符串。
在 Form1 上,有一个文本框,我想用这个字符串更新。在 Form2 上,我有一个列表框,其中包含在完成每个进程后最终将加载到 Form1 上的此文本框中的值。基本上我想做的是将下一个字符串放入Form1的文本框中。
我已经尝试在 Form2 中创建一个公共属性,如下所示:
public string NextString { get { return ListBox1.Items[ListBox1.TopIndex].ToString(); } }
那么,在 Form1 中:
Form2 frm = new Form2();
string next = frm.NextString;
TextBox1.Text = next;
然后很快。除了没有。不幸的是,这对我不起作用。我做了一些研究,发现这种方法并不是最佳实践,并读到使用事件处理程序是更实用的方法。所以我研究了这些。我知道我必须创建一个新的 EventArgs 类,一个新的公共事件,一个触发方法,我想如何处理该事件,然后是 Form1 中的处理程序方法。 This post is where I read into that.
我已经尝试过操纵答案以满足我的需要:
public class StringEventArgs : EventArgs
{
public string NextString { get; set; }
public StringEventArgs(string data)
{
NextString = data;
}
}
一个新事件:
public event EventHandler<ListEventArgs> NewFileAdded;
这就是我迷路的地方。我很难理解现在发生了什么。如果有人可以帮助我完成我想做的事情,我将非常感激!
【问题讨论】:
-
您是在使用 MVVM,还是所有这些都是在代码隐藏中完成的?
-
这一切都在代码隐藏文件中完成
-
Form2什么时候打开?
-
它可以在进程完成之前或之后打开。在流程开始之前确保它是打开的并不难