擴充套件DataGridView 的功能(四)

2022-03-21 09:12:31 字數 2034 閱讀 7575

在用友金蝶等財務軟體中,經常需要輸入貨幣型別的資料, 那麼這種輸入框要如何製作呢?

借助於強大的 datagridview 控制項, 我們可以輕易的製作出這種效果,見下圖.

要擴充套件 datagridview 的列型別,我們只需要從 datagridviewcolumn 類中派生出乙個新的類,並且為這個列新增對應的單元格模板即可(從 datagridviewcell 類中派生)。

**其實超級簡單, 新增乙個 column 型別

**public

class

datagridviewcurrencycolumn : datagridviewcolumn

public

override

sealed

datagridviewtristate resizable

set}

}新增乙個 cell 型別

主要是過載 onpaint ,對單元格重新繪製,給資料的每一位都畫上一條分隔線就行了

**public

class

datagridviewcurrencycell : datagridviewtextboxcell

}protected

override

void

paint(graphics graphics, rectangle clipbounds, rectangle cellbounds, 

introwindex,

datagridviewelementstates cellstate, 

object

value, 

object

formattedvalue,

string

errortext, datagridviewcellstyle cellstyle,

datagridviewadvancedborderstyle advancedborderstyle,

datagridviewpaintparts paintparts)

//邊框

if((paintparts 

&datagridviewpaintparts.border) !=0

)//畫出10個整數字,2個小數字

for(

inti =1

; i 

<

10; i++)

graphics.drawline(pens.red, cellbounds.left +10

*p_width, cellbounds.top, cellbounds.left +10

*p_width,

cellbounds.bottom -1

);graphics.drawline(pens.darkcyan, cellbounds.left +11

*p_width, cellbounds.top, cellbounds.left +11

*p_width,

cellbounds.bottom -1

);//

文字if

(value 

==null

)return

;var sf 

=new

stringformat

;decimalv =

convert.todecimal(value);

string

s_int =((

int) v).tostring();

//兩位小數

string

s_dec =(v

*100

%100

).tostring("00

");string

s_value ="

¥"+s_int 

+s_dec;

for(

inti =0

; i 

<

s_value.length; i++)

sf.dispose();}}

擴充套件 DataGridView 的功能(一)

grid 控制項的重要性無需多說了,但要找乙個好用的卻是難上加難 雖然市面上有很多成熟公司的成熟產品,但那些東西畢竟太貴了,所以還是自己寫比較實在 什麼,破解版還是算了吧 自vs2005 以後,vs 系統自帶了乙個 datagridview 控制項,這個控制項的功能是很強大的,擴充套件性也不錯,所以...

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...