2017-07-14 26 views
1

比方說,我創建了幾個標題是這樣的:如何伸展列及其頭比例ListView中

this.grdUsers.Columns.Add("id"); 
    this.grdUsers.Columns.Add("username"); 
    this.grdUsers.Columns.Add("phone"); 
    this.grdUsers.Columns.Add("address"); 

,後來我添加項目到列表視圖這樣的:

ListViewItem parent; 
     parent = this.grdUsers.Items.Add(user.id); 
     parent.SubItems.Add(user.username); 
     parent.SubItems.Add(user.phone); 
     parent.SubItems.Add(user.address); 

I will end up with something like this: 

enter image description here

,但我想真正實現這一點:

enter image description here

經過一番閱讀後,我發現有關HorizontalContentAlignment,但我找不到它ListViewItem ...我在這裏錯過了一些明顯的東西?我正在使用WinForm應用程序。

+0

我一直使用控制的客戶端矩形,只是計算它們基於百分比我分配給每一列。不要認爲有一種自動的「填充到寬度」的東西。 – DonBoitnott

+0

@DonBoitnott現在,我很難過,我必須說...我的意思是,爲什麼這樣一個簡單的功能會失蹤?所以,基本上,每當表單增長或縮小時,都要進行這些計算,對嗎? – Whirlwind

+0

@DonBoitnott順便說一句,你說的關於使用'ClientRectangle.Size',工作。 – Whirlwind

回答

0

我有這樣結束了:

private void ResizeUserListHeaders() 
{ 
    var listViewWidth = this.grdUsers.ClientRectangle.Width; 

    var headerWidth = listViewWidth/this.grdUsers.Columns.Count; 

    foreach (ColumnHeader header in this.grdUsers.Columns) 
    { 

      header.Width = headerWidth; 
    } 
} 

然後在表格的ResizeEnd行動:

private void ResizeEndAction(object sender, EventArgs e) 
{ 
    this.ResizeUserListHeaders(); 
}