1

有没有办法为 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 e.Cell.Column.Key

Case "Name"
CellChanged_Name(sender, e)

Case "Title"
CellChanged_Title(sender, e)    

' ... etc ...

End Select

有人可以告诉我是否可以创建在特定列的单元格更改时触发的事件处理程序?还是我最好手动调用特定于列的函数?

4

2 回答 2

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)

作为参考,请查看此更换大开关?

于 2012-02-27T16:08:21.587 回答
0

当任何单元格发生更改并且网格无法为特定列创建事件处理程序时,将始终调用 CellChange 事件处理程序的事件处理程序。如果您愿意,可以联系 Infragistics 并建议他们通过论坛或提交支持请求来添加此功能。在获取帮助页面上有每个链接:http: //www.infragistics.com/support/get-help.aspx

于 2012-02-27T21:14:47.007 回答