簡體   English   中英

c #datagridview column autosizemode

[英]c# datagridview column autosizemode

我希望默認情況下列使用

AutoSizeMode = DisplayedCells;

但我希望也可以調整列的大小,但DisplayedCells類型不允許調整大小..

有任何想法嗎?

只要方便,您可以調用子DataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells) ,例如在加載數據之后。 保留DataGridView.AutoSizeColumnsMode屬性,用戶仍然可以自己調整列的大小,但它們將有一個舒適的開始。 兩全其美。

行:

dataGridView1.AutoResizeRow(2, DataGridViewAutoSizeRowMode.AllCellsExceptHeader);

柱:

dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

我不認為你可以實現這一點,因為AutoSizeMode一旦設置為DisplayedCells,所有行為都由設計控制。 但我有這個想法。 你應該保留你的列(我認為Columns [0]用於演示目的)AutoSizeMode固定在DataGridViewAutoSizeColumnMode.None 您希望將其設置為DisplayedCells因為您可能希望根據單元格文本長度擴展或折疊列寬。 所以我的想法是每次CellBeginEdit啟動時,我們將AutoSizeMode設置為DisplayedCells,當CellEndEdit啟動時,我們保存寬度(為您自動調整),然后將AutoSizeModeNone ,然后將列Width分配給該保存的值。 這是我的代碼:

//First before loading data
private void form_Load(object sender, EventArgs e){
   dataGridView.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
   //Fill your dataGridView here
   //.........
   //.........
   int w = dataGridView.Columns[0].Width;
   //reset to None
   dataGridView.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
   dataGridView.Columns[0].Width = w;
}
//Now for CellBeginEdit and CellEndEdit
private void dataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
    {
        if(e.ColumnIndex == 0) //because I suppose the interested column here is Columns[0]
           dataGridView.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    }
private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        if(e.ColumnIndex == 0){
          int w = dataGridView.Columns[0].Width;
          dataGridView.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
          dataGridView.Columns[0].Width = w;
        }
    }

我測試了代碼,它似乎工作正常,有一種情況它不會工作,因為我們不為這種情況添加代碼,即通過代碼更改Cell值。

我不得不說你想要的有點奇怪,我不太關心列的寬度,用戶應該知道如何處理它。

在我的一個應用程序中,我將自動調整設置為顯示的單元格。 然后,一旦加載表單,我關閉自動調整大小,以允許用戶進行大小調整。

private void Form1_Load(object sender, EventArgs e)
    {

        //  Designer has autosize set to displayedcells.
        dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;   // Turn off autosize
        dataGridView1.AllowUserToResizeRows = true;                                 // Turn on letting user size columns
        dataGridView1.AllowUserToOrderColumns = true;
    }

在Visual Studio 2008(和VB.net)中唯一對我有用的是:

 For i As Integer = 0 To grdList2.Columns.Count - 1
  If i <> (grdList2.Columns.Count - 1) Then
   grdList2.Columns(i).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
  Else
   grdList2.Columns(i).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
  End If
 Next

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM