如何實現DataGridView列寬自適應?

一、使用AutoSizeColumnsMode屬性自適應列寬

DataGridView控件提供了AutoSizeColumnsMode屬性,用於設置列的自適應模式,包括:

  1. None:不自適應,列寬為默認寬度
  2. AllCells:根據單元格內容自適應列寬,包括列頭單元格和數據單元格
  3. AllCellsExceptHeader:根據數據單元格內容自適應列寬,不包括列頭單元格
  4. ColumnHeader:根據列頭單元格內容自適應列寬
  5. Fill:均分控件可用寬度,填滿整個控件

例如,如果我們將AutoSizeColumnsMode屬性設置為AllCells,DataGridView控件會根據單元格內容自適應列寬。這樣,在用戶輸入或者添加新的數據時,列寬會自動調整,保證所有數據都能夠完整的顯示在單元格中。代碼示例:

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

二、使用AutoResizeColumns方法手動調整列寬

AutoSizeColumnsMode屬性僅適用於列的自適應模式。如果我們需要手動調整一列或多列的寬度,可以使用AutoResizeColumns方法。該方法接受一個DataGridViewAutoSizeColumnsMode枚舉值作為參數,指定需要調整的列的自適應模式。代碼示例:

// 自適應所有列
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
// 自適應指定列
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader, DataGridViewAutoSizeColumnMode.ColumnHeader);

在上述代碼中,第一行代碼會自適應所有列,第二行代碼則會自適應除列頭單元格外的所有數據單元格。

三、使用ColumnHeaderMouseDoubleClick事件手動調整列寬

如果我們需要進一步的手動調整列寬,可以使用ColumnHeaderMouseDoubleClick事件。該事件在用戶雙擊列頭單元格時觸發,我們可以編寫事件處理方法計算列寬並進行調整。代碼示例:

private void dataGridView1_ColumnHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
    DataGridView gridView = sender as DataGridView;
    if (gridView != null && e.Button == MouseButtons.Left)
    {
        DataGridViewColumn clickedColumn = gridView.Columns[e.ColumnIndex];
        int paddingWidth = gridView.RowHeadersVisible ? gridView.RowHeadersWidth : 0;
        clickedColumn.Width = clickedColumn.GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true) + paddingWidth;
    }
}

上述代碼中,我們首先獲取DataGridView控件和用戶雙擊的列。然後,我們計算出列的最佳寬度,並加上行頭的寬度。實際上,GetPreferredWidth方法返回的是列的“期望”寬度,但由於這個方法考慮了單元格內容的特殊情況,所以可以保證列寬恰到好處。

四、使用DefaultCellStyle.WrapMode屬性自動換行單元格內容

以上三種方法可以讓DataGridView列寬自適應,但如果單元格內容過長,可能會導致單元格顯示不完整。為了解決這個問題,我們可以使用DefaultCellStyle.WrapMode屬性來自動換行單元格內容,並調整行高使所有內容都能夠完整的顯示。代碼示例:

dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

上述代碼中,我們將DefaultCellStyle.WrapMode屬性設置為True,表示自動換行單元格內容。然後設置AutoSizeRowsMode屬性為AllCells,控件會自動根據單元格內容調整行高,保證所有內容完整的顯示在單元格中。

原創文章,作者:UXGRY,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/331765.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UXGRY的頭像UXGRY
上一篇 2025-01-20 14:10
下一篇 2025-01-20 14:10

相關推薦

  • 如何實現圖像粘貼到蒙版

    本文將從多個方面介紹圖像粘貼到蒙版的實現方法。 一、創建蒙版 首先,在HTML中創建一個蒙版元素,用於接收要粘貼的圖片。 <div id=”mask” style=”widt…

    編程 2025-04-29
  • Django ORM如何實現或的條件查詢

    在我們使用Django進行數據庫操作的時候,查詢條件往往不止一個,一個好的查詢語句需要考慮我們的查詢要求以及業務場景。在實際工作中,我們經常需要使用或的條件進行查詢,本文將詳細介紹…

    編程 2025-04-29
  • Python一次性輸入10個數如何實現?

    Python提供了多種方法進行輸入,可以手動逐個輸入,也可以一次性輸入多個數。在需要輸入大量數據時,一次性輸入十個數就非常方便。下面我們從多個方面來講解如何一次性輸入10個數。 一…

    編程 2025-04-28
  • 如何實現van-picker點擊遮罩不關閉

    van-picker是一個非常實用的Vue組件,但默認情況下,點擊遮罩會自動關閉選擇器。本文將介紹如何通過代碼實現van-picker點擊遮罩不關閉的功能。 一、通過覆蓋遮罩實現 …

    編程 2025-04-27
  • 如何實現矩陣相乘等於E

    本文將介紹如何通過代碼實現兩個矩陣相乘等於單位矩陣E。 一、線性代數基礎 要理解矩陣相乘等於E,需要先了解一些線性代數基礎知識。 首先,矩陣的乘法是滿足結合律的,即(A*B)*C=…

    編程 2025-04-27
  • HTML讓背景圖片不受自適應影響的方法

    要讓背景圖片不受自適應影響,可以使用CSS的background-size屬性來控制背景圖的大小,同時也可以使用background-position屬性來控制背景圖在元素中的位置…

    編程 2025-04-27
  • 如何實現一個隨機抽數生成器

    隨機數在程序開發中是非常常見的需求,而隨機抽數生成器則是其一大應用場景。在這篇文章中,我們將從多個方面來探討如何實現一個隨機抽數生成器,包括隨機數的概念、生成隨機數的方法、如何抽取…

    編程 2025-04-27
  • CSS設置背景圖片大小自適應

    一、CSS設置背景圖片大小 在CSS中,我們可以通過background-size屬性來設置背景圖片的大小。該屬性可以設置為一個具體的像素值,也可以使用cover或者contain…

    編程 2025-04-23
  • iframe高度自適應撐開

    一、什麼是iframe標籤? iframe(英文全稱 inline frame)是 HTML 語言中的一種標籤用於在當前HTML文檔中插入另外一個HTML文檔。通過使用 ifram…

    編程 2025-04-23
  • 如何實現均值中心化——編程實踐分享

    一、什麼是均值中心化 均值中心化是一種數據處理方式,它通過減去數據集的平均值,來將數據集的均值設為0。這種處理方式常常被用於數據分析和機器學習等領域中,以使得各個數據之間更易於比較…

    編程 2025-04-18

發表回復

登錄後才能評論