gpt4 book ai didi

c# - ObjectListView 的 TreeListView 单元格编辑非常非常慢

转载 作者:太空宇宙 更新时间:2023-11-03 16:30:31 25 4
gpt4 key购买 nike

我正在使用 TreeListView (ObjectListView) http://objectlistview.sourceforge.net/cs/index.html - 并用一些项目填充它。

我在用户输入时双击可编辑的列之一。

不幸的是,编辑速度非常慢,从 Qty 列中的一个单元格编辑(参见下图)到下一个单元格编辑每次大约需要 5-10 秒。 此外,单元格编辑器需要一段时间才能出现和消失。

下面是我用来填充 TreeListView 的代码:

        TreeListView.TreeRenderer renderer = this.treeListView.TreeColumnRenderer;
renderer.LinePen = new Pen(Color.Firebrick, 0.5f);
renderer.LinePen.DashStyle = DashStyle.Solid;
renderer.IsShowLines = true;

treeListView.RowFormatter = delegate(OLVListItem olvi)
{
var item = (IListView)olvi.RowObject;
if (item.ItemType == "RM")
olvi.ForeColor = Color.LightSeaGreen;
};

treeListView.CanExpandGetter = delegate(object x)
{
var job = x as IListView;
if (job != null)
{
if (job.ItemType == "PA" || job.ItemType == "JC")
{
var rm = job.ItemPart.GetRawMaterial();
var subParts = job.ItemPart.SubParts.Where(v => v != null).ToList();
if (rm.Count > 0|| subParts.Count > 0)//
return true;


}


}

return false;
};


this.treeListView.ChildrenGetter = delegate(object x)
{
try
{
var job = x as IListView;
if (job != null)
{
if (job.ItemType == "PA" || job.ItemType == "JC")
{
var part = job.ItemPart;
var rm = part.GetRawMaterial();
var subParts = part.SubParts.Where(v => v != null).ToList();
var items = new List<IListView>();

items.AddRange(subParts.GetRange(0, subParts.Count).ToList<IListView>());
items.AddRange(rm.GetRange(0, rm.Count).ToList<IListView>());
return items;
}

}
return null;

}
catch (UnauthorizedAccessException ex)
{
MessageBox.Show(this, ex.Message, "ObjectListViewDemo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return null;
}
};
var lItems= jobs.ToList<IListView>();
treeListView.SetObjects(lItems );


Expand(lItems[0]);
treeListView.RebuildAll(true);

}

public void Expand(object expItem)
{
treeListView.ToggleExpansion(expItem);

foreach (var item in treeListView.GetChildren(expItem))
{
Expand(item);
}

}


这是单元格编辑的图片:

enter image description here

为什么编辑这么慢?难道我做错了什么?我该怎么做才能让它更快?

最佳答案

在您的代表中,您使用线性搜索和多个列表副本(也是线性的)。这是针对每个项目的。糟糕的表现是意料之中的。

如果您想对此进行改进,您可以改为预先计算结果。

关于c# - ObjectListView 的 TreeListView 单元格编辑非常非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com