将事件组合成一个处理程序,高效



这个问题有两个部分。

  1. 最好每个对象具有一个特定于事件的函数或结合对象事件,如果是,
  2. 使用哈希代码来定义发件人对象并进行比较以找出有效的更新?

示例在下面的代码。

我的事件功能:

private void GeneralEventHandler(object sender, EventArgs e){
        var senderHash = sender.GetHashCode();
        if (senderHash == tbDatabase.GetHashCode())
            Settings.DB.Default.Database = tbDatabase.Text;
        else if (senderHash == tbSchema.GetHashCode())
            Settings.DB.Default.Schema = tbSchema.Text;
}

我的对象定义:

    // tbDatabase
    / 
    this.tbDatabase.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
    this.tbDatabase.Location = new System.Drawing.Point(62, 3);
    this.tbDatabase.Name = "tbDatabase";
    this.tbDatabase.Size = new System.Drawing.Size(210, 20);
    this.tbDatabase.TabIndex = 0;
    this.tbDatabase.LostFocus += new System.EventHandler(this.GeneralEventHandler);
    // 
    // tbSchema
    // 
    this.tbSchema.Location = new System.Drawing.Point(55, 3);
    this.tbSchema.Name = "tbSchema";
    this.tbSchema.Size = new System.Drawing.Size(217, 20);
    this.tbSchema.TabIndex = 1;
    this.tbSchema.LostFocus += new System.EventHandler(this.GeneralEventHandler);

我主要仅使用它即时更新用户设置。我将设置文件保存在退出中。

我更喜欢让每个对象都有自己的事件处理程序。每个处理程序依次调用一种"执行契约"的方法,而不知道谁打电话给它。如果几个对象"做同一件事"让他们称其为相同的" do-it"方法。

您永远都不知道未来会带来什么 - 与事件处理程序组合的对象现在可以在他们将来需要做的事情差异。

相关内容

  • 没有找到相关文章

最新更新