在用友金蝶等財務軟體中,經常需要輸入貨幣型別的資料, 那麼這種輸入框要如何製作呢?
借助於強大的 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...