擴充套件 DataGridView 的功能(一)

2021-04-30 01:06:40 字數 1708 閱讀 1964

grid 控制項的重要性無需多說了,但要找乙個好用的卻是難上加難

雖然市面上有很多成熟公司的成熟產品, 但那些東西畢竟太貴了,所以還是自己寫比較實在(什麼, 破解版還是算了吧)

自vs2005 以後,vs 系統自帶了乙個 datagridview 控制項, 這個控制項的功能是很強大的,擴充套件性也不錯, 所以我們就以它為基礎吧

開始統計需要擴充套件的功能先:

1.顯示行號

2.加入可以輸入文字的 datagridviewcomboboxcell

2.可分組摺疊

3.合併單元格

4.undo/redo的支援

5.其他。。。。。

定義類///

///擴充套件的datagridview

///public

class

datagridviewex:datagridview

先來乙個最簡單的:顯示行號

這裡我們用到了乙個事件 rowpostpaint, 檢視msdn後可知該事件是在「繪製 datagridviewrow 後發生」

datagridview 在繪製 datagridviewrow 時沒有處理行號, 那就由 datagridviewex 來處理吧

知道了原理,新增行號就很簡單了, drawstring 就ok。

給出主要的**實現 :

void

datagridviewex_rowpostpaint(

object

sender,datagridviewrowpostpainteventargse)}

完成後的效果:

dropdownstyle 屬性

//////

控制組合框的外觀和功能

///[description(

"控制組合框的外觀和功能

"), defaultvalue(comboboxstyle.dropdownlist)]

public

comboboxstyle dropdownstyle

set

因為主要的功能都是在 datagridviewex 中實現的, 呵呵

回到 datagridviewex 中, 重寫 oneditingcontrolshowing 方法,看字面意思就知道,這個方法是在 grid 的任何「編輯控制項」顯示時呼叫

看到這個我想大家都明白了, 我們只要在 combobox 控制項顯示出來時修改它的樣式即可

protected

override

void

oneditingcontrolshowing(datagridvieweditingcontrolshowingeventargs e){if

(currentcell 

!=null

&¤tcell.owningcolumn 

isdatagridviewcomboboxcolumnex)

{datagridviewcomboboxcolumnex col 

=currentcell.owningcolumn 

asdatagridviewcomboboxcolumnex;

//修改組合框的樣式

if(col.dropdownstyle 

!=comboboxstyle.dropdownlist)

{combobox combo 

=e.control 

ascombobox;

combo.dropdownstyle

擴充套件DataGridView 的功能(四)

在用友金蝶等財務軟體中,經常需要輸入貨幣型別的資料,那麼這種輸入框要如何製作呢?借助於強大的 datagridview 控制項,我們可以輕易的製作出這種效果,見下圖.要擴充套件 datagridview 的列型別,我們只需要從 datagridviewcolumn 類中派生出乙個新的類,並且為這個列...

DataGridView控制項的使用

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

datagridview的行列選擇

取得在datagridview中被選擇的列 行 單元格時,可以使用datagridview物件的selectedcolumns selectedrows selectedcells屬性。vb.net 表示被選擇的單元格 console.writeline 單元格被選擇 for each c as d...