Winforms中的复杂网格

时间:2015-05-26 06:43:49

标签: c# winforms gridview telerik

我需要以非常复杂的方式在WinForms中显示数据。

有很多行,每行需要显示略有不同。 每行的模型都有一个实体列表,每个实体都转换为一个按钮。

根据一些规则,每行的按钮以特定方式提供。每行在行和列中以不同的方式显示不同数量的按钮。

除此之外,显示器需要绑定到模型并监听许多频繁的更改,不仅要更改显示的值,还要显示指示是否显示行或显示的事项的计算数据是否按钮,颜色指示等。

现在它是用Telerik GridView实现的,并且,正如您所料,它不能很好地运行,数据太多。滚动条步履蹒跚,在许多场景中,行或单元格不会显示,直到用户滚动一点。

这是我希望如何显示它的例子(没有颜色和东西)

Example

这是代码的一个非常简短的示例:

public class CustomCellElement : GridDataCellElement
{
    protected override SizeF ArrangeOverride(SizeF finalSize)
    {
        try
        {
            float x = finalSize.Width;
            float y = 0;
            float maxHeight = 0;

                foreach (var child in this.Children.ToList())
                {
                    try
                    {                            
                       var element = child as RadButtonElement;
                       arrange logic...
                       child.Arrange(location);
                       .
                       .

    ------------            

    protected override void CreateChildElements()
    {
        _childItems = new ThreadSafedBindingList<E>();
        _childItemsBindings = new List<Binding>();
        base.CreateChildElements();
    }

    protected override void SetContentCore(object value)
    {
        ...
        foreach (var someChild in childs.ToList())
        {
             AddItem(someChild);
        }
        ...
    ....

    protected override void SetBindings(SomeChildEntity childElement, CustomRadButtonElement item)
    {
        ....
        Creating many bindings necessary for each SomeChildEntity 
        ....
    }


....

我很高兴听到建议!

由于

0 个答案:

没有答案