用datagrid控件顯示表格數據,當表格內容過多時,datagrid控件單元格寬度并不足以用來完全顯示表格中的數據內容。而只有自己每次去拉動分界線,來進行調整。當出現表格字段比較多時,這樣做就顯得很麻煩。 以下是用程序根據表格內容來自動調整datagrid控件單元格寬度。 先定義一個sub過程autosizecol,用來調整datagrid中的列寬。 如下: public sub autosizecol(byval col as integer) dim width as single width = 0 dim numrows as integer numrows = ctype(datagrid1.datasource, datatable).rows.count dim g as graphics g = graphics.fromhwnd(datagrid1.handle) dim sf as stringformat sf = new stringformat(stringformat.generictypographic) dim size as sizef dim i as integer i = 0
do while (i < numrows) size = g.measurestring(datagrid1(i, col).tostring, datagrid1.font, 500, sf) if (size.width > width) then width = size.width end if i = (i + 1) loop
現在就可以表格內容來定義整張表所有列的寬度了。如下: public sub autosizetable() dim numcols as integer numcols = ctype(datagrid1.datasource, datatable).columns.count dim i as integer i = 0 do while (i < numcols) autosizecol(i) i = (i + 1) loop end sub
只要使用以上兩個sub過程就可以達到你想要的結果了!
一個完整的實例如下: private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load dim connstring as string connstring = "provider=microsoft.jet.oledb.4.0;data source=northwind.mdb" dim sqlstring as string sqlstring = "select * from customers" dim dataadapter as oledbdataadapter dataadapter = nothing dim _dataset as dataset _dataset = nothing
try
dim connection as oledbconnection connection = new oledbconnection(connstring)
dataadapter = new oledbdataadapter(sqlstring, connection)
_dataset = new dataset dataadapter.fill(_dataset, "customers") connection.close() catch ex as exception messagebox.show("出錯!") me.close() return end try dim tablestyle as datagridtablestyle tablestyle = new datagridtablestyle tablestyle.mappingname = "customers"
datagrid1.tablestyles.clear() datagrid1.tablestyles.add(tablestyle) datagrid1.datasource = _dataset.tables("customers") end sub
private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click autosizetable() end sub
private sub button2_click(byval sender as system.object, byval e as system.eventargs) handles button2.click autosizecol(1) end sub