Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PropertyGrid中的颜色场慢得可笑_C#_Performance_Propertygrid_Double Buffering_Colordialog - Fatal编程技术网

C# PropertyGrid中的颜色场慢得可笑

C# PropertyGrid中的颜色场慢得可笑,c#,performance,propertygrid,double-buffering,colordialog,C#,Performance,Propertygrid,Double Buffering,Colordialog,我有一个PropertyGrid显示一个对象,其中一个字段是System.Drawing.Color。这使得PG上的字段自动显示一种颜色,如果你点击编辑它,你会得到一个不错的下拉列表,显示自定义颜色、系统颜色等。问题是,这个下拉列表大约需要10-30秒来绘制-自定义颜色尤其糟糕。我试着在PG上设置双缓冲来隐藏慢度,但这只会使它在显示前绘制时暂停,速度没有提高。当其他一切都运行得很好时,有什么原因可以解释为什么这个特殊的功能会如此缓慢 我在运行这个程序的同时,还运行了另一个与之通信的程序,该程序使

我有一个
PropertyGrid
显示一个对象,其中一个字段是
System.Drawing.Color
。这使得PG上的字段自动显示一种颜色,如果你点击编辑它,你会得到一个不错的下拉列表,显示自定义颜色、系统颜色等。问题是,这个下拉列表大约需要10-30秒来绘制-自定义颜色尤其糟糕。我试着在PG上设置双缓冲来隐藏慢度,但这只会使它在显示前绘制时暂停,速度没有提高。当其他一切都运行得很好时,有什么原因可以解释为什么这个特殊的功能会如此缓慢


我在运行这个程序的同时,还运行了另一个与之通信的程序,该程序使用了一个3D渲染引擎,该引擎无疑有点处理器负担过重,但大多数情况下并没有那么糟糕。现在唯一慢得让人无法忍受的是颜色下拉列表。无法想象是什么原因造成的。

在没有运行3D程序的计算机上运行程序时,速度有这么慢吗?除非你发布再现问题的代码,否则可能没有人能回答这个问题。这很难测试-问题中的颜色对应于3D场景中的灯光,因此如果3D程序不运行,它将没有数据可处理。不幸的是,如果不发布整个程序(包括3D项目),我不认为我可以发布足够的代码来使用,这将是巨大的。不过,颜色是自动的,使用标准的系统类,而不是我写的东西。只是想知道是否有某种方法可以双重缓冲颜色对话框本身而不仅仅是PropertyGrid。听起来,您的具有color属性的类不仅仅是报告颜色值,而是从3d项目中“获取”颜色-这可能很耗时。忽略PropertyGrid控件,只需实例化PropertyGrid使用的类,获取有问题的Color属性并对其进行分析-获取颜色需要多长时间?抱歉,不需要。数据在程序开始时只获取一次,在需要时不调用。最终,当你改变东西时,它会被发送回3D程序,但这还没有实现。初始设置后,不会从三维场景中提取任何数据。(好吧,有一件事是这样的,但这并不相关。)无论如何,不是颜色的获得慢。仅仅画下拉列表就要花那么长时间。你可以看着它慢慢地一个接一个地画每个盒子。我确信这是一个GUI问题,而不是数据问题。获取数据后,关闭3D程序,然后尝试显示颜色属性。看看有没有区别。