2011-12-06 73 views
2

我越來越困惑。我設置了:從C中禁用的listview啓用滾動條#

this.listView1.Enabled = false; 

當我做這個listview的滾動條也被禁用。我想在listview禁用時看到所有的listviewitems和滾動條。請給我一些建議。謝謝。

+2

的問題是建立ScrollBars="Auto"滾動裏面:你爲什麼要禁用列表視圖?你需要用戶不能編輯項目嗎?或者是什麼?據此,我們可以提供不同的解決方案... – Marco

+0

有幾種方法可以在[本] [1]文章中實現這一點。 [1]:http://stackoverflow.com/questions/529121/wpf-disable-listbox-but-enable-scrolling – JayP

+0

對不起@Marco我不需要不同的解決方案。我編碼多個線程在列表視圖上,我想看到它的所有listviewitem更改。 :) –

回答

2

經過很多評論,我假設你的listview,因爲經常從很多不同的線程更新,閃爍。
如果是這樣,一種可能的解決方案是啓用DoubleBuffering;這個屬性無論如何是protected只能從後代類訪問。
所以,你可以:

  1. 添加一個新類到您的項目並粘貼以下
  2. 編譯
  3. 丟棄新從工具箱到窗體頂部控制顯示的代碼,換舊人

這可以解決您的問題。

using System; 
using System.Windows.Forms; 

class BufferedListView : ListView 
{ 
    public BufferedListView() 
    { 
     this.DoubleBuffered = true; 
    } 
} 

的想法是從this post採取SO。

+0

@HùngLêXuân:我的回答對你有幫助嗎?你有沒有設法解決你的問題呢? – Marco

+0

像魅力一樣工作。 :))感謝@Marco。 –

1

由於滾動條是控件本身的一部分,因此您無法滾動禁用的控件(因此它被禁用,所以...)。

如果要滾動而不是讓用戶選擇什麼,你可以這樣做

this.listBox1.SelectionMode = SelectionMode.None; 

如果要恢復它,你可以將其設置爲SelectionMode.One單,或的一個其他選擇多選擇津貼。

另一個(imho過度複雜)選項正在使用戶繪製ListBox。

+1

ListView沒有SelectionMode屬性。謝謝@alex –

0

也許如果你把你的ListView一個面板,您可以啓用通過在面板控制