在winform中使用自定义Ultragrid

时间:2012-12-19 07:31:34

标签: c# winforms custom-controls infragistics ultragrid

我是使用自定义控件的新手。

我在winform应用程序中创建了一个继承了ultragrid的自定义控件。我不能在这里粘贴我的代码,但我在下面解释:

  1. 我在CellClickAction命令之前在OnPaint方法中设置了一些属性,例如HeaderClickActionbase.OnPaint(pe);,这些属性改变了超网格的外观和行为。

    < / LI>
  2. 我添加了一个ContextMenuStrip控件,其中包含应在Mouse Up事件中使用的3个项目(升序,降序,无)。

  3. 我为ultragrid的Mouse Up事件编写了一个事件处理程序,它应该找到clicked标题的标题(如果用户点击了标题)并通过check进行3way排序,然后更改单击的SortIndicator属性列(如果单击鼠标左键)或在该列上显示ContextMenuStrip(如果单击鼠标右键)。

  4. 我为ContextMenuStrip的Item Clicked事件编写了一个事件处理程序,它根据点击的项目对网格进行排序。

  5. 现在的问题是当我想在一个表单中使用我的网格时。每个事情都在缓慢进行,有时视觉工作室会变得锁定,或者例如我在其点击事件上使用MessageBox.Show("");命令向表单添加一个按钮处理程序然后运行,并单击此按钮以锁定表单。

    谁能告诉我我的错误是什么?请随时向我询问我的问题。

2 个答案:

答案 0 :(得分:2)

您可以尝试在表单“锁定”时暂停调试,并向上调用堆栈以了解我锁定的代码(或者可能执行无限循环或类似的操作)

但是,对于这种个性化,您还可以创建一个“配置器”类,它接受一个ultragrid实例,然后添加所有处理程序,因此所有个性化代码都保留在这个“配置器”类中。
如果你需要大量的个性化,也许自定义控件是值得的......但如果个性化只是一些事件处理程序,那么保持特定类中的所有代码可能更容易管理。

创建自定义控件需要大量的专业知识,并且总是带来许多怪癖和不常见的问题......您需要定义所有属性的默认值,定义其他属性属性以获得适当的设计时间支持,能够承受视觉工作室IDE的奇怪之处,它崩溃......

答案 1 :(得分:0)

Akh joooon,谢谢大家。我发现问题出在哪里......那是在 OnPaint 事件中。但不是在CellClickAction或HeaderClickAction中,它出现在外观属性,ActiveRowAppearance和SelectedRowAppearance中。因为我也设置了它们。我评论了它们,现在一切都很好。