偶在用这样的代码,但是: Private Sub VS1_Change() HS1.Top = Screen.Height '''+ VS1.Value ''HS1.Height + HS1.Max = Screen.Height F3Pic2.Top = 0 - VS1.Value End Sub Private Sub HS1_Change() VS1.Left = Screen.Width '''+ HS1.Value ''VS1.Width + VS1.Max = Screen.Width F3Pic2.Left = 0 - HS1.Value End Sub这些代码不能总在屏幕最下面和最右边,一旦拖动位置就变化了,跑到屏幕中间了啊
在窗体的事件中增加代码,比如: Private Sub Form_Resize() On Error Resume Next VSPrinter1.Width = Me.ScaleWidth VSPrinter1.Height = Me.ScaleHeight End Sub记得最好加上On Error Resume Next 否则可能在一些情况下出错
vb6.0中实现如下:Private Sub Form_Resize() If Me.WindowState = 0 Then Me.WindowState = 2 End Sub vb.net实现如下:Private Sub FormMain_Resize(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Resize If Me.WindowState = 0 Then Me.WindowState = System.Windows.Forms.FormWindowState.Maximized End Sub
Option Explicit Private FormOldWidth As Long '保存窗体的原始宽度 Private FormOldHeight As Long '保存窗体的原始高度'在调用ResizeForm前先调用本函数 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'按比例改变表单内各元件的大小,在调用ReSizeForm前先调用ReSizeInit函数 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 DoubleScaleX = 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 SubPrivate Sub Form_Load() Call ResizeInit(Me) '在程序装入时必须加入 End SubPrivate Sub Form_Resize() Call ResizeForm(Me) '确保窗体改变时控件随之改变 End Sub 以上代码经过测试,不知道合不合楼主要求, 不过比Athoncj(阿龙)的短不少....OTL
lhd144() ( ) 信誉:100 Blog ————你的代码我已经在用了,是不行的。 现在我把问题再总结一下: 目前我采用在窗体内加个和窗体大小一样的图片框,所有的控件在图片框内放置,在电脑显示分辨率:1280*1024下编辑好窗体。然后在电脑显示分辨率:1024*768下进行程序调试,结果是看不到最下面的和最左边的控件,而后采用加上hscroll和vscrol1的方式,控制代码如下: Private Sub VS1_Scroll() HS1.Top = Screen.Height '''+ VS1.Value ''HS1.Height + HS1.Max = Screen.Height F3Pic2.Top = 0 - VS1.Value End Sub Private Sub VS1_Change() F3Pic2.Top = 0 - VS1.Value End SubPrivate Sub HS1_Change() '''+ HS1.Value ''VS1.Width + VS1.Max = Screen.Width F3Pic2.Left = 0 - HS1.Value End SubPrivate Sub HS1_Scroll() VS1.Left = Screen.Width F3Pic2.Left = 0 - HS1.Value End SubPrivate Sub ShowHV() '检测是否显示滚动条的过程.
有例子么?
form1.width=200*screen.TwipsPerPixelX
form1.height=200*screen.TwipsPerPixelY
200是你想设置的大小
最大化 要不像zzyong00(阿勇) 那样 设置窗体大小
把你所有的控鍵放到picturebox中,然后用滾動條控制.
Private Sub VS1_Change()
HS1.Top = Screen.Height '''+ VS1.Value ''HS1.Height +
HS1.Max = Screen.Height
F3Pic2.Top = 0 - VS1.Value
End Sub
Private Sub HS1_Change()
VS1.Left = Screen.Width '''+ HS1.Value ''VS1.Width +
VS1.Max = Screen.Width
F3Pic2.Left = 0 - HS1.Value
End Sub这些代码不能总在屏幕最下面和最右边,一旦拖动位置就变化了,跑到屏幕中间了啊
Private Sub Form_Resize()
On Error Resume Next
VSPrinter1.Width = Me.ScaleWidth
VSPrinter1.Height = Me.ScaleHeight
End Sub记得最好加上On Error Resume Next
否则可能在一些情况下出错
If Me.WindowState = 0 Then Me.WindowState = 2
End Sub
vb.net实现如下:Private Sub FormMain_Resize(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Resize
If Me.WindowState = 0 Then Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
End Sub
Private FormOldWidth As Long
'保存窗体的原始宽度
Private FormOldHeight As Long
'保存窗体的原始高度'在调用ResizeForm前先调用本函数
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'按比例改变表单内各元件的大小,在调用ReSizeForm前先调用ReSizeInit函数
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 DoubleScaleX = 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 SubPrivate Sub Form_Load()
Call ResizeInit(Me) '在程序装入时必须加入
End SubPrivate Sub Form_Resize()
Call ResizeForm(Me) '确保窗体改变时控件随之改变
End Sub
以上代码经过测试,不知道合不合楼主要求,
不过比Athoncj(阿龙)的短不少....OTL
现在我把问题再总结一下:
目前我采用在窗体内加个和窗体大小一样的图片框,所有的控件在图片框内放置,在电脑显示分辨率:1280*1024下编辑好窗体。然后在电脑显示分辨率:1024*768下进行程序调试,结果是看不到最下面的和最左边的控件,而后采用加上hscroll和vscrol1的方式,控制代码如下:
Private Sub VS1_Scroll()
HS1.Top = Screen.Height '''+ VS1.Value ''HS1.Height +
HS1.Max = Screen.Height
F3Pic2.Top = 0 - VS1.Value
End Sub
Private Sub VS1_Change()
F3Pic2.Top = 0 - VS1.Value
End SubPrivate Sub HS1_Change()
'''+ HS1.Value ''VS1.Width +
VS1.Max = Screen.Width
F3Pic2.Left = 0 - HS1.Value
End SubPrivate Sub HS1_Scroll()
VS1.Left = Screen.Width
F3Pic2.Left = 0 - HS1.Value
End SubPrivate Sub ShowHV() '检测是否显示滚动条的过程.
出现的问题是:垂直滚动条在窗体启动时能显示,并能拖动,水平的滚动条不能显示,在垂直滚动条拖动到能看到水平滚动条后也能拖动,但是他们不能始终分别在屏幕的最下方和最右边!请高手指点,我想用滚动条控制其像网页那样上下、左右拖动。
http://community.csdn.net/Expert/topic/5258/5258297.xml?temp=.3461267