【发布时间】:2017-04-09 14:55:47
【问题描述】:
我在 C# 中有以下 Windows 窗体程序:
Form 1 上有一个 ListBox 和 Button。当按下 Button 时,它将显示 Form2 上面有一个 TextBox 和 Button。当按下 Form 2 上的 Button 时,它会将文本放入 Form1 上的 ListBox 中。下面是每个表单的代码,然后是我正在使用的类。任何建议都会很棒。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.NewTextChanged += new EventHandler<CustomEvent>(form2_NewTextChanged);
frm2.ShowDialog();
// Unsubscribe from event
frm2.NewTextChanged -= form2_NewTextChanged;
frm2.Dispose();
frm2 = null;
}
private void form2_NewTextChanged(object sender, CustomEvent e)
{
//Text = e.Text;
lbItem.Items.Add(e.Text);
}
}
public partial class Form2 : Form
{
public event EventHandler<CustomEvent> NewTextChanged;
private string newText;
public Form2()
{
InitializeComponent();
}
public string NewText
{
get { return newText; }
set
{
if (newText != value)
{
newText = value;
OnNewTextChanged(new CustomEvent(newText));
}
}
}
protected virtual void OnNewTextChanged(CustomEvent e)
{
EventHandler<CustomEvent> eh = NewTextChanged;
if (eh != null)
eh(this, e);
}
private void btnSendToForm1_Click(object sender, EventArgs e)
{
newText = textBox1.Text;
}
}
public class CustomEvent : EventArgs
{
private string text;
public CustomEvent(string text)
{
this.text = text;
}
public string Text
{
get { return text; }
}
}
我想使用自定义处理程序。有什么建议吗?
【问题讨论】:
-
我已经更新了答案,抱歉之前写错了
-
当 Form 2 上的按钮被按下时,它会将文本放入 Form1 上的 ListBox 中。我想使用自定义处理程序。 当 form2 上的按钮被按下时,form2 是否应该关闭?...或者这可能会发生多次,每次按下按钮时?也许您的意思是自定义 Event 而不是“处理程序”?
-
当我单击 form2 上的按钮使其添加到 form 1 的列表框中时,没有添加任何内容。
-
我刚刚在下面发布了这个问题的解决方案。你可以参考一下。这是代码中的一个非常小的错误。我已经在答案中更正了。
标签: c# winforms event-handling