2012-09-03 19 views
1

我有一個listview控件,顯然有很多listviewitems,每當控件被重新繪製時,鼠標在「over」的項目失去它的背景顏色(即。它是白色的)。ListViewItem在重繪時丟失背景顏色並且光標位於該項目上

一旦項目再次被繪製,並且光標沒有超過它,恢復正確的背景顏色。

有誰知道爲什麼會發生這種情況,以及如何停止?

任何幫助,將不勝感激

爲了擴大這一點,並希望能多加一點背景....

它發生在Windows 7中,.NET 3.5(雖然它也發生在項目目標也是4.0)。我的開發計算機上的主題是Viao Theme 5,但它也發生在我的另一臺具有默認Windows 7主題的機器上。

ListView控件實例化這樣的...

 this.PlaylistTrackList.Cursor = System.Windows.Forms.Cursors.Hand; 
     this.PlaylistTrackList.Dock = System.Windows.Forms.DockStyle.Fill; 
     this.PlaylistTrackList.FullRowSelect = true; 
     this.PlaylistTrackList.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; 
     this.PlaylistTrackList.LabelWrap = false; 
     this.PlaylistTrackList.Location = new System.Drawing.Point(4, 4); 
     this.PlaylistTrackList.Margin = new System.Windows.Forms.Padding(4); 
     this.PlaylistTrackList.MultiSelect = false; 
     this.PlaylistTrackList.UseCompatibleStateImageBehavior = false; 
     this.PlaylistTrackList.View = System.Windows.Forms.View.Details; 

比方說,有5列表視圖項,A,B,C,d,和E.如果項目BC和d的背景顏色屬性是紅色的,沒有選擇任何東西,也沒有選擇任何東西。當列表視圖控件因任何原因重新繪製時,並且光標恰好位於BC或D中的任何項目上時,則該項目將以白色背景顏色繪製,而不是應該是紅色。但是,一旦鼠標再次不在該項目上並且其重新繪製返回到紅色。

不管「真實」背景顏色屬性如何,我總是可以停止繪製光標位於白色背景上的項目?

+0

你可以張貼一些代碼,告訴我們你現在的「漆」的方法?我認爲你在談論正常的行爲。選擇後的背景顏色變成「藍色」?也許可能你已經激活了'hoverselection'。如果將鼠標移到它們上面,項目將自動選中。 – varg

+0

您好varg,我沒有自定義繪畫方法,它與選擇項目無關。我只是根據狀態設置各種項目的背景顏色屬性。但是,當控件重新繪製時,鼠標「超過」它們的項目的背景色將被繪製爲白色,而不是正確的背景色。 OwnerDraw爲false,HotTracking和Hover選擇也是如此。 –

+0

這個問題需要更多細節。至少Windows版本,.NET版本,活動Windows主題和ListView初始化。最好從Designer.cs代碼複製/粘貼。 –

回答

0

初始化ListView控件如下:

listView1.BackColor = Color.Black; 
    listView1.ForeColor = Color.White; 
    listView1.Dock = DockStyle.Fill; 
    listView1.View = View.Details; 
    listView1.FullRowSelect = true; 

有關詳情,請訪問以下鏈接: http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.ownerdraw.aspx

+0

嗨,ListView的初始化就像那樣,我真的需要完全實現我自己的繪圖來繞過這種行爲嗎? –