在DataGridView控制項中實現凍結列分界線

2021-08-25 12:08:26 字數 986 閱讀 4707

我們在使用office excel的時候,有很多時候需要凍結行或者列。這時,excel會在凍結的行列和非凍結的區域之間繪製上一條明顯的黑線。如下圖:

(圖1)

winform下的datagridview控制項也能實現類似的凍結行或者列的功能(參見: ,但是呢,datagridview控制項預設不會在凍結列或者行的分界處繪製乙個明顯的分界線,這樣的話,終端使用者很難注意到當前有列或者行是凍結的。如下圖所示:你能很快的找到那一列是freeze的麼?

(圖2)

正是因為如此,我們如果能做出類似excel的效果,就可以大大提高資料的可讀性。

通常,我們如果想在現有的控制項上多畫點什麼,就會去override onpaint方法,然後加入自己的ownerdraw邏輯,但是呢在datagridview上有一些困難:

1.如何確定凍結分界線的位置

2.如何保證分界線不會繪製到scrollbar上

研究了一下,我們可以借用datagridview提供的cellpainting方法。在datagridview繪製每乙個cell的時候判斷當前cell是否是分界線所在的位置,然後進行繪製。最終做出的效果如下圖:

(圖3)

以下是datagridview控制項擴充套件源**:

public class datagridviewex : datagridview

if (drawrowline)

e.handled = true;}}

private int getdisplaycolumnfrozenlineindex()

else if (!column.frozen)

}return lastfreezecolumnindex;

}private int getdisplayrowfrozenlineindex()

else if (!row.frozen)

}return lastfreezerowindex;}}

c 控制項 datagridview

datagridview繫結資料,同樣可以檔案讀取資料 迴圈賦值新增到datatable private void datablind datagridview內新增其他控制項 可新增button datagridviewbuttoncolumn checkbox datagridviecheckb...

應有dataGridView控制項

using system.data.sqlclient namespace usedatagridview string strcon server localhost user id sa pwd database my 定義資料庫連線字串 sqlconnection sqlcon 宣告資料庫連線...

DataGridView控制項的使用

1 資料繫結 下面將介紹用datatable對datagridview控制項進行繫結。首先得到datatable dt,dt中的列為 id pname short name 其次 設定datagridview控制項 dgvproductname 的列,如下圖所示。注意 列的個數要與datatable...