【问题标题】:Visual inheritance for RadGridViews event handling possible?RadGridViews 事件处理的视觉继承可能吗?
【发布时间】:2015-02-13 21:59:20
【问题描述】:

我有 2 个项目:

  • 项目 A 由一个名为 BaseUC 的用户控件组成,该控件由一个 RadPanel 和一个 RadGridView 组成(两者都将修饰符设置为公共)
  • 项目 B 包含一个继承自 BaseUC 的用户控件 (来自班级本身)。项目 A 作为引用的 dll 包含在项目 B 中

现在情况是这样的:

  • BaseUC 中的两个元素都显示在 DerivedUC 中。
  • 我可以在项目 B 中毫无问题地编辑 RadLabel(属性)
  • GridView 在项目 B 中的属性显示为灰色
  • 如果我给我在项目 A 中实现为虚拟的 GridView 事件并在项目 B 中覆盖它们,我会遇到这样的问题,即我在尝试触发事件时立即收到异常。如果我尝试手动将事件添加到项目 B 中的网格视图,则相同。

所以我的问题是双重的,但归结为基本问题是否可以对视觉继承的 RadGridViews 进行事件处理:

  1. 如何让 RadGridView 使其属性在项目 B 的设计视图中可编辑?
  2. 如何处理那里的事件?

如果这两件事都可能的话。

【问题讨论】:

  • UserControl 上的控件事件将主要用于 UserControl。该表单只会查看/访问您在 UserControl 中定义和触发的事件。没有足够的细节可以确定,但美国也可能无法参加 B.A 活动。例如 NumericUpDown 或 ComboBox,它们是复合控件,但 NUD 使用它们的事件并触发与 NUD 相关的新事件(在您的情况下为 UC)。

标签: c# winforms inheritance gridview telerik


【解决方案1】:

您可以将 UserControl 中包含的子控件公开为公共属性,即创建一个返回子控件的公共属性,而不仅仅是将子变量设为公共。这将使子控件可用于接收事件处理程序并设置公共属性。请注意,这违反了面向对象的规则之一,即封装......但规则意味着在符合要求的某些情况下被打破:)

【讨论】:

    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 2019-06-26
    相关资源
    最近更新 更多