【问题标题】:Call Anonymous binded delegate method of radiobutton CheckedChanged调用单选按钮 CheckedChanged 的​​匿名绑定委托方法
【发布时间】:2013-08-02 08:00:46
【问题描述】:

我有一个动态生成的单选按钮,其中匿名委托声明为

private void SetFieldDependency(DocumentSimpleFieldDetailDto obj, Table table, RadioButton ctrlExtended, Panel pnl)
    {
        if (this.ListOfDependentFields != null)
        {
            var lstRelatedField = this.TemplateCompiledDto.LstSimpleFields.Where(a => a.FkDocumentTemplateSectionId == obj.FkDocumentTemplateSectionId
                                                                                && !a.IsGridField && a.FieldGroup == obj.FieldGroup);
            var objDependencyList = this.ListOfDependentFields.FindAll(h => lstRelatedField.Any(k => h.ParentFieldId == k.TemplateSimpleFieldDetailId));
            if (objDependencyList != null && objDependencyList.Count > 0)
            {
                ctrlExtended.AutoPostBack = true;
                ctrlExtended.CheckedChanged += (sender, e) =>
                                                   {
                                                       foreach (var fieldDependency in objDependencyList.Where(h => h.ChildFieldId != null))
                                                       {
                                                           var tr = table.FindControl(fieldDependency.ChildFieldId.ToString()) as TableRow;
                                                           if (tr != null)
                                                           {
                                                               if (fieldDependency.ParentFieldId == obj.TemplateSimpleFieldDetailId)
                                                               {
                                                                   tr.Visible = true;
                                                               }
                                                               else
                                                               {
                                                                   tr.Visible = !tr.Visible;
                                                               }                                                                   
                                                           }
                                                       }
                                                       SetGridFieldDependency(obj, pnl, objDependencyList);
                                                   };
            }
        }
    }

现在在一些按钮提交事件上,我必须调用这个radiobutton CheckChanged Event。如果它像ctrlExtended_Changed(object sender, EventArgs e)

我可以轻松调用,但如何调用绑定的匿名委托方法?

我也在使用 Asp.net

【问题讨论】:

  • 技术上你可以,但似乎有点落后和啰嗦,为什么不直接定义正确的东西呢?
  • 稍微编辑了我的问题。希望它能更清楚我的问题

标签: c# c#-4.0 event-handling anonymous-methods


【解决方案1】:

如果其他事件需要触发此事件CheckedChanged,那么您应该明确调用CheckedChanged 事件。如果您只想调用匿名委托方法中的逻辑,我建议您将该逻辑放在一个方法中并调用该方法

编辑

ctrlExtended.CheckedChanged += (sender, e) =>{
  // My logic
  SharedLogic(sender, e);
}
.
.
.
public void SharedLogic(object sender, EventHandler e)
{
// the shared logic
}

这样,当CheckedChanged 触发事件时,您的逻辑仍然会被调用,但 SharedLogic 方法也会被调用,您可以从其他地方调用该方法

【讨论】:

  • 当人们对你投了反对票并且不发表评论时,它建议声誉猎人
  • 我想你可能没有理解这个问题。你提到的那件事
  • 让我们看看:你有一个匿名委托方法,你想从不同的位置调用它,然后只是事件,我关闭了吗?
  • 是的,我只是详细说明了你的回答,它的伴侣......你一开始是对的......:)
  • 我发誓 Shaz 和“不知道名字”,我没有拒绝你的任何回答,亲爱的
【解决方案2】:

有不同的使用方式..

public class NumberEventArgs : EventArgs
{
   private int _number;
   public NumberEventArgs(int num)
   {
      this._number = num;
   }
    public int getNumber
    {
      get
      {
        return _reached;
      }
}
// eventhandler Method
private void ShowMessage(object sender, NumberEventArgs e)
{
 MessageBox.Show("Hello user your ticket no is:" + e.getNumber().ToString());
}

 myRadioButton.CheckedChanged += (sender, e) =>{ ShowMessage(); }
 myRadioButton.CheckedChanged += (sender, e) => MessageBox.Show(string.Format("sender is: {0} and eventargumnet is:{1}",sender.getType(),e.toString()};
 myRadioButton.CheckedChanged += (sender, e) => string.Format("string = {0} and {1}", sender.getType() , e);

【讨论】:

  • 当人们对你投了反对票并且不发表评论时,它建议声誉猎人
  • +1 来反击你的 -1,因为这是一个很好的答案,如果你这么好,如果你认为我的回答很好地反击我的 -1
  • 我已经编辑了我的问题。我无法使用匿名方法中的方法,我使用的是在注册方法之前使用的一些参数和集合
猜你喜欢
  • 2010-11-01
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 2014-08-23
  • 1970-01-01
相关资源
最近更新 更多