【问题标题】:Create UserControl By using UltraGrid of Infragistics [closed]使用 Infragistics 的 UltraGrid 创建 UserControl [关闭]
【发布时间】:2014-06-03 09:35:00
【问题描述】:

我想使用 Infragistics UltraGrid 控件创建自定义控件。我想在将数据导出为 excel 的 UltraGrid 顶部添加一个按钮。您可以通过查看下图获得更好的想法。

此网格在我的项目中多次使用,因此我需要在用户控件中使用它。我试图创建它,但是当我在我的项目中添加这个控件时,我无法访问该 UltraGrid 的所有实际属性。

请帮忙...

【问题讨论】:

    标签: c# .net custom-controls infragistics ultrawingrid


    【解决方案1】:

    您正在创建一个composite control。通常这意味着您无法从要放置用户控件的表单访问组合控件。通常您需要提供代码来访问构成 UserControl 的控件的底层属性和事件。

    例如,假设您要更改用户控件中 UltraWinGrid 的标题,您应该在 UserControl 的代码中编写这样的 get/set 属性。

    public string GridText
    {
        get
        {
            return ultraGrid1.Text;
        }
        set
        {
            ultraGrid1.Text = value;
        }
    }
    

    您可以想象,对于像 Infragistics UltraWinGrid 这样可能具有数千个属性的控件,这不是一项简单的任务。更不用说一长串事件了。

    来自 Microsoft 的See here a tutorial 关于构建复合控件并解释了底层控件的属性问题。

    一个简单的解决方法(不推荐)可能是将 UltraWinGrid 和按钮的属性修饰符从 Private 更改为 Public。通过这种方式,可以从 UserControl 的属性中获得网格引用,并且您可以像以前一样对其进行编程。

     userControl1.ultraGrid1.Text = "My User Control";
    

    但是不建议这样做,因为您授予对编写控件的完全访问权限,并且在某些情况下,这可能是不可取的。这在很大程度上取决于您的使用场景。

    【讨论】:

    • 谢谢您的解释。有没有其他方法可以做到这一点?因为我需要更改 Ultragrid 的很多属性。
    • 正如我所说,您不能直接访问 UltraGrid 的属性。如果您有需要更改相同属性的静态情况,您可以在设计时在用户控件中设置它们。如果您有动态情况,或者您是否在用户控件级别提供属性包装器,或者您将网格公开并直接处理网格属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多