简体   繁体   English

调用单选按钮CheckedChanged的匿名绑定委托方法

[英]Call Anonymous binded delegate method of radiobutton CheckedChanged

I have a dynamically generated radio button with anonymous delegate declared as 我有一个动态生成的单选按钮,其匿名委托声明为

in

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);
                                                   };
            }
        }
    }

Now on some button submit event I have to call this radiobutton CheckChanged Event.If it is like ctrlExtended_Changed(object sender, EventArgs e) 现在在某个按钮提交事件上,我必须将此CheckChanged radiobutton CheckChanged CheckChanged Event.If就像ctrlExtended_Changed(object sender, EventArgs e)

I can easily call but how can i call binded anonymous delegate method? 我可以轻松调用,但如何调用绑定的匿名委托方法?

Also I am using Asp.net 我也在用Asp.net

if some other event need to triger this event CheckedChanged then you should definetly call CheckedChanged event. 如果某个其他事件需要触发此事件CheckedChanged ,则应明确调用CheckedChanged事件。 if you just want the logic in the anonymous delegate method to be called i suggest you place that logic in a method and call that method 如果您只想调用匿名委托方法中的逻辑,我建议您将该逻辑放在方法中并调用该方法

edit 编辑

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

in that way when the event CheckedChanged fired your logic will still be called upon, but also the method SharedLogic will be called, and you can call that method from elsewhere 这样,当触发CheckedChanged事件时,您的逻辑仍然会被调用,但是方法SharedLogic也将被调用,您可以从其他地方调用该方法

There are different way of using it.. 有不同的使用方式。

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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM