2017-01-23 55 views
2

我在WinForm中使用了一個列表視圖。點擊列標題後,listview將被排序。禁用排序列表視圖

是否可以禁用它?

+0

什麼形式? WPF,WinForms,WebForms? – BWA

+0

我正在使用WinForms – R4z0R

回答

1

Here是一篇介紹如何在listView上實現排序的文章。

顯然,您必須從listView上的ColumnClick事件中重新註冊事件處理程序。

2

我會檢查這個答案 - ListView sorting

..但不會禁止上點擊任何按鈕排序。解決這個問題的方法是創建自己的孩子,它繼承自ListView,它將重寫排序方法,不調用base方法=>什麼也不做。

此外,您可以添加ListViewItemSorter並將其設置爲null。

例如爲:

class MyListView : System.Windows.Forms.ListView 
{ 
    public MyListView() 
    { 
     this.Sorting = System.Windows.Forms.SortOrder.None; 
     this.ListViewItemSorter = null; 
    } 
} 
0

就個人而言,我更喜歡LVS_NOSORTHEADER窗口樣式:

列標題不喜歡按鈕的作用。如果在報告視圖中單擊列標題不執行操作(如排序),則可以使用此樣式。

類似這樣使用的東西:

public class MyListView : 
    System.Windows.Forms.ListView 
{ 
    protected override CreateParams CreateParams 
    { 
     get 
     { 
      var cp = base.CreateParams; 
      cp.Style |= 0x8000; // LVS_NOSORTHEADER 
      return cp; 
     } 
    } 
} 

請注意,您無法使用SetWindowLong設置樣式控制創建之後。 You can only use LVS_NOSORTHEADER upon control creation

ListCtrl不會忽略樣式,但某些樣式僅在創建控件時才起作用。因此,在創建控件之後對這些樣式的任何更改都將不起作用。