有没有办法为UltraWinGrid的每一列定义特定的CellChange事件处理程序?
我正在为Infragistics UltraWinGrid重构一个CellChange事件处理程序,如下所示:
Select Case e.Cell.Column.Key
Case "Name"
' handle cell change event for Name cell with a big ugly blob of code
Case "Title"
' handle cell change event for Title cell with a big ugly blob of code
' ... etc ...
End Select
我希望能够创建在更改特定列的单元格时触发的事件处理程序,但我不知道这是否可行。如果不是,我将重构select-case以手动调用特定于列的事件处理程序。
Select Case e.Cell.Column.Key
Case "Name"
CellChanged_Name(sender, e)
Case "Title"
CellChanged_Title(sender, e)
' ... etc ...
End Select
有人可以告诉我是否可以创建在特定列的单元格更改时触发的事件处理程序?或者我最好只手动调用列特定的函数?
答案 0 :(得分:2)
请注意,我正在用C#进行翻译,因此可能出现问题 您需要引用Linq命名空间,然后使用这样的语法
在您的form_load或其他地方
Dim dictionary As New Dictionary(Of String, Infragistics.Win.UltraWinGrid.CellEventHandler)
dictionary.Add("Name", CellChanged_Name)
dictionary.Add("Title", CellChanged_Title)
dictionary.Add("....", ....)
在常见的CellChanged事件中
dictionary(e.Cell.Column.Key).Invoke(sender, e)
作为参考,请查看此Replacement for big switch?
答案 1 :(得分:0)
当任何单元格发生更改并且网格无法为特定列创建事件处理程序时,将始终调用CellChange事件处理程序的事件处理程序。如果您愿意,可以联系Infragistics并建议他们通过论坛或提交支持请求添加此功能。在获取帮助页面上有每个链接: http://www.infragistics.com/support/get-help.aspx