【问题标题】:Infragistics UltraWinGrid column-level CellChange event handlerInfragistics UltraWinGrid 列级 CellChange 事件处理程序
【发布时间】:2012-02-28 05:14:47
【问题描述】:

有没有办法为 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

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

【问题讨论】:

    标签: infragistics ultrawingrid


    【解决方案1】:

    请注意,我正在从 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?

    【讨论】:

    • 这不是一个坏主意。我会试一试,然后告诉你进展如何。
    • 我建议您进行额外的更改,您可以创建一个使用网格和单元格或仅单元格的委托,而不是使用现有委托作为事件参数。如果您使用 sender 参数,这可能会阻止需要在每个处理程序中强制转换它。
    • 是的,这将是一个非常有用的改进,抱歉,我对 vb 不是很流利。假设这是我们读者的练习:-)
    • 赞成,因为它回答了我的第二个问题,即重构糟糕的事件处理程序代码的好方法是什么。另外,为了记录,我更喜欢 C#; VB.NET 不是我的代码。
    【解决方案2】:

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

    【讨论】:

    • 接受,因为它回答了我的主要问题,即是否可以在列级别添加事件处理程序。我不会联系 Infragistics 支持,我正在重构旧代码。如果我正在编写新代码,我不会使用任何 Infragistics 产品。
    • @Walter Stabosz,我想听听您对为什么不使用 Infragistics 产品的任何反馈。您可以直接给我发电子邮件 ahalama@infragistics.com。
    • 我对 Infragistics 最大的抱怨是你的文档很糟糕。请参阅我在 community.infragistics.com/forums/p/56337/291136.aspx 的帖子。糟糕的文档意味着调试令人头疼。这意味着我必须等待 3 天才能获得 Infragistics 支持的回复或购买高级支持合同。我将我的公司切换到 jQuery(在我们的 Web 项目中),因为它是免费的,并且具有出色的文档和社区支持,而且总体上效果更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多