我希望在某种情况下,从Telerik RadComboBox中删除“OnSelectedIndexChanged”事件。
当方案满足时,我希望删除“myRCB_SelectedIndexChanged”,当它不是时,将事件保持原样。
我试过了:
myRCB.SelectedIndexChanged -= myRCB_SelectedIndexChanged
和
myRCB.SelectedIndexChanged -= new RadComboBoxSelectedIndexChangedEventHandler(myRCB_SelectedIndexChanged)
两者都不起作用,并且事件仍然会在更改索引时触发。我很感激帮助!
答案 0 :(得分:0)
在正常控制的情况下,第一个应该工作,假设签名是正确的,但在这种情况下,控件是来自dll(?)的外部控件,我不确定,但是可以每个页面加载时都会填充处理程序吗?
您可以尝试在某些条件下填充页面加载时禁用处理程序。出于测试目的,tou可以例如将删除条件保存到标签或sessoon变量。
答案 1 :(得分:0)
第一个的语法对我有用。设置断点以确保事件处理程序不会重新添加。否则,可能在该场景上设置一个标志,并使用if语句包装整个Event Handler方法。
答案 2 :(得分:0)
这两个回复引导我回答(谢谢!)。我在必要时添加了断点,观察了添加/删除事件处理程序的时间/位置,并发现用户体验仍然存在 - 页面仍然会回发并运行SelectedIndexChanged
事件,即使正在进行清除,之后不再进行补充。
这样做,让我想到只是禁用AutoPostBack
我曾经尝试删除事件处理程序的地方。现在,除了在.aspx中单独定义AutoPostBack="true"
之外,我还可以在.cs中将其删除。
我希望这可以帮助其他人,因为这让我在桌子上敲了好几天!