雖然這是個小功能,但是歷史可以追溯到作品展,當時就特別想讓控制項伴隨窗體的變大而變大,如果窗體變大了而控制項還是那麼小就會很難看,所以各種查資料,看書。後來算是解決了這個問題。但是當時並沒有記錄下來,直到後來又有人問我,我想應該把學到的新東西,比較陌生的做乙個總結。
下面來看看我是怎麼實現的
1、新增乙個標準模組,在模組裡寫下如下**:
option explicit
private formoldwidth as long
'儲存窗體的原始寬度
private formoldheight as long
'儲存窗體的原始高度
public sub resizeinit(formname as form)
dim obj as control
formoldwidth = formname.scalewidth
formoldheight = formname.scaleheight
on error resume next
for each obj in formname
obj.tag = obj.left & " " & obj.top & " " & obj.width & " " & obj.height & " "
next obj
on error goto 0
end sub
public sub resizeform(formname as form)
dim pos(4) as double
dim i as long, temppos as long, startpos as long
dim obj as control
dim scalex as double, scaley as double
scalex = formname.scalewidth / formoldwidth
scaley = formname.scaleheight / formoldheight
on error resume next
for each obj in formname
startpos = 1
for i = 0 to 4
temppos = instr(startpos, obj.tag, " ", vbtextcompare)
if temppos > 0 then
pos(i) = mid(obj.tag, startpos, temppos - startpos)
startpos = temppos + 1
else
pos(i) = 0
end if
obj.move pos(0) * scalex, pos(1) * scaley, pos(2) * scalex, pos(3) * scaley
next i
next obj
on error goto 0
end sub
2、在窗體中呼叫模組的過程
private sub form_resize()
call resizeform(me) '確保窗體改變時控制項隨之改變
end sub
private sub form_load()
call resizeinit(me) '在程式裝入時加入
end sub
下面看看敲好的效果圖:
如何讓控制項隨窗體的大小變化而變化
根據 窗體的新的大小調整控制項 的 大小 新的x 新的y 控制項 private void setcontrols float newx,float newy,control cons 獲取控制項的tag屬性值,並分割後儲存字串陣列 float a convert.tosingle mytag 0 ...
如何讓窗體大小隨著控制項的大小變化而變化
2014 01 20 14 25 form的autosize true,formborderstyle fixedsingle tablelayoutpanel及其裡面的容器的dock fill,autosize true label中的文字比較貼著窗體邊緣時可以通過padding屬性來調整 因定寬...
VB控制項隨窗體大小而變化 Resize Form
vb控制項隨窗體大小而變化 當窗體大小改變時,如何動態的改變控制項的大小是許多vb程式設計師頭痛的 事。有的人設定窗體resizable但卻不改變控制項的大小 有的人則根據控制項的 絕對位置與視窗大小相加減的辦法來重新定位控制項與改變大小,這種辦法比 較繁瑣,且不可重用 當然也有人則限定視窗乾脆不讓...