我使用的是winforms和版本2.7.0的OLV。我注意到控件的油漆问题似乎是什么。我的标题是“背景颜色变为黑色”,但实际上整个控件在某些时候显示为黑色。我将此控件放在具有大量其他控件的表单上,并且它们不会出现此行为。这个问题似乎与表单变得无法响应有关。我从这个应用程序进行webservice调用,有时候这些调用没有及时完成。在这些情况下,我的申请将暂时无响应。通常,时间很短(2或3秒),我在标题栏中看到(无响应)文本。发生这种情况时,OLV控制器占用的区域变黑。如果有其他人看过这个,我想知道是否有一些设置我可能需要改变。注意:我的表单顶部没有其他窗口。下面是一些设计师代码
this.objListView_EvidenceFiles.AllColumns.Add(this.olvColFileName);
this.objListView_EvidenceFiles.AllColumns.Add(this.olvColCancelButton);
this.objListView_EvidenceFiles.BackColor = System.Drawing.Color.White;
this.objListView_EvidenceFiles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.olvColFileName,
this.olvColCancelButton});
this.objListView_EvidenceFiles.EmptyListMsg = "";
this.objListView_EvidenceFiles.EmptyListMsgFont = new System.Drawing.Font("Arial", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.objListView_EvidenceFiles.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.objListView_EvidenceFiles.FullRowSelect = true;
this.objListView_EvidenceFiles.HeaderUsesThemes = false;
this.objListView_EvidenceFiles.HideSelection = false;
this.objListView_EvidenceFiles.Location = new System.Drawing.Point(16, 10);
this.objListView_EvidenceFiles.MultiSelect = false;
this.objListView_EvidenceFiles.Name = "objListView_EvidenceFiles";
this.objListView_EvidenceFiles.OwnerDraw = true;
this.objListView_EvidenceFiles.SelectAllOnControlA = false;
this.objListView_EvidenceFiles.SelectColumnsOnRightClick = false;
this.objListView_EvidenceFiles.SelectColumnsOnRightClickBehaviour = BrightIdeasSoftware.ObjectListView.ColumnSelectBehaviour.None;
this.objListView_EvidenceFiles.ShowGroups = false;
this.objListView_EvidenceFiles.ShowItemToolTips = true;
this.objListView_EvidenceFiles.Size = new System.Drawing.Size(200, 238);
this.objListView_EvidenceFiles.SmallImageList = this.imageList_Icons;
this.objListView_EvidenceFiles.TabIndex = 1;
this.objListView_EvidenceFiles.TabStop = false;
this.objListView_EvidenceFiles.UnfocusedHighlightBackgroundColor = System.Drawing.SystemColors.MenuHighlight;
this.objListView_EvidenceFiles.UnfocusedHighlightForegroundColor = System.Drawing.Color.White;
this.objListView_EvidenceFiles.UseCompatibleStateImageBehavior = false;
this.objListView_EvidenceFiles.View = System.Windows.Forms.View.Details;
this.objListView_EvidenceFiles.CellClick += new System.EventHandler<BrightIdeasSoftware.CellClickEventArgs>(this.objListView_EvidenceFiles_CellClick);
this.objListView_EvidenceFiles.SelectionChanged += new System.EventHandler(this.objListView_EvidenceFiles_SelectionChanged);
this.objListView_EvidenceFiles.Leave += new System.EventHandler(this.objListView_EvidenceFiles_Leave);
我有我们的应用程序的屏幕截图(我不希望公开的一些项目被清除):
答案 0 :(得分:0)
您已将ObjectListView标记为OwnerDrawn,因此Windows会在需要重绘时向控件发送消息。在下面,Window将清除控件显示缓冲区,等待控件呈现自身,但控件不能,因为你在这2或3秒内基本上挂起了你的应用程序。重绘消息将排队,并在应用程序重新开始工作后立即处理。
最佳解决方案:不要挂起您的应用!将长时间运行的任务移动到后台线程,并在后台提取完成后更新UI。某事like this。