![](/img/trans.png)
[英]Stop double call to function using radioButton CheckedChanged events?
[英]Call Anonymous binded delegate method of radiobutton CheckedChanged
我有一个动态生成的单选按钮,其匿名委托声明为
在
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);
};
}
}
}
现在在某个按钮提交事件上,我必须将此CheckChanged
radiobutton
CheckChanged
CheckChanged Event.If就像ctrlExtended_Changed(object sender, EventArgs e)
我可以轻松调用,但如何调用绑定的匿名委托方法?
我也在用Asp.net
如果某个其他事件需要触发此事件CheckedChanged
,则应明确调用CheckedChanged
事件。 如果您只想调用匿名委托方法中的逻辑,我建议您将该逻辑放在方法中并调用该方法
编辑
ctrlExtended.CheckedChanged += (sender, e) =>{
// My logic
SharedLogic(sender, e);
}
.
.
.
public void SharedLogic(object sender, EventHandler e)
{
// the shared logic
}
这样,当触发CheckedChanged
事件时,您的逻辑仍然会被调用,但是方法SharedLogic也将被调用,您可以从其他地方调用该方法
有不同的使用方式。
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.