这花了我好几天的时间来开发一个在类与代表和事件之间进行通信的演示。我想知道这是否是完成类之间数据传递的最佳实践方式。如果有更好的方法请告诉我。具体来说,如果子类中发生了某些事情,您如何将其返回到主类。这在通过将用户界面与业务逻辑级别和数据访问级别分离来进行 n 层架构时特别有用。
我有一个包含 3 个文本框的表单:tb1、tb2 和 tbAnswer。我还有一个按钮,上面写着“添加”,它只是 button1。
主要形式是:
namespace DelegateTest
{
public delegate void ShowMessage(object sender, Form1.AnswerEventArgs e);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void a_OnShowMessage(object sender, AnswerEventArgs e)
{
tbAnswer.Text = e.answer;
}
public class AnswerEventArgs :EventArgs
{
public string answer { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
AddClass a = new AddClass();
a.OnShowMessage += new ShowMessage(a_OnShowMessage);
a.AddMe(Convert.ToInt16(tb1.Text), Convert.ToInt16(tb2.Text));
}
}
}
并且名为 AddClass.cs 的子表单是:
namespace DelegateTest
{
class AddClass
{
public event ShowMessage OnShowMessage;
public void AddMe(int a, int b)
{
Form1.AnswerEventArgs e = new Form1.AnswerEventArgs();
e.answer = (a+b).ToString();
OnShowMessage(this, e);
}
}
}