VB.NET 如何随窗体变化动态改变控件位置和大小

时间:2022-08-21 03:47:46
各位大侠,VB.NET 如何随窗体变化动态改变控件位置和大小

15 个解决方案

#1


望大侠们提出正解,不是某一个,而是所有的,包括动态生成的控件在内,都可以自动调整
大小

#2


设Dock或Anchor属性又或者自己写代码去控制

#3


设Dock或Anchor属性,不能解决动态添加的控件问题
程序控制怎么控制阿,大侠

resizeform如何写?

#4


动态添加也可以设它的Dock或Anchor属性

#5


给你一个图片随窗体大小而改变大小的例子。我想控件也和图片一样的吧!你看看改一下就行了!
Private Sub frmMain_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.SizeChanged
        If Me.WindowState = FormWindowState.Minimized OrElse Me.ClientSize.Width < 10 OrElse Me.ClientSize.Height < 10 Then
            Return
        End If
        If System.IO.File.Exists(Application.StartupPath & "\Back.jpg") Then
            Me.BackgroundImage = New Drawing.Bitmap(Image.FromFile(Application.StartupPath & "\Back.jpg"), Me.ClientSize.Width, Me.ClientSize.Height)
        End If
    End Sub

#6


你要计算好比例(也就是窗体变化后的缩放比例),然后在form的sizechange里面,把所有控件都按照比例来缩放就是了。

#7



我的解决方案是这样子的,不知道还有没有更好的方法,谢谢各位大侠赏光
Dim WBaseValue As Double
    Dim HBaseValue As Double


    Private Sub Form1_Resize(ByVal sender As Object, _
     ByVal e As System.EventArgs) Handles MyBase.Resize
        Dim X As Integer
        Dim Y As Integer
        Dim control As Control
        For Each control In Me.Controls

            X = control.Location.X * Me.Width * WBaseValue
            Y = control.Location.Y * Me.Height * HBaseValue
            control.Location = New System.Drawing.Point(X, Y)
            control.Height = control.Height * Me.Height * HBaseValue
            control.Width = control.Width * Me.Width * WBaseValue

        Next

        WBaseValue = 1 / Me.Width
        HBaseValue = 1 / Me.Height

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        WBaseValue = 1 / Me.Width
        HBaseValue = 1 / Me.Height

    End Sub

#8


hamadou(闵峰--迎接2006) 正解

#9


用好Dock和Anchor属性就可以了,好好研究吧.自己计算比例缩放简直是.......

#10


我也建议用DOCK,按钮太大会很难看的

#11


同意  W_W_Q(韦一笑)  的。

.net都出来这么久了,还有人完全是上个世纪的做法,估计是现在市面上的入门书太滥、内容简单地翻新过时的开发平台的代码造成的误导的缘故。

#12


用好Dock和Anchor属性,有时候,特别是Button会变得特别难看

#13


设Dock或Anchor属性,可以做到很完美

#14


设Dock或Anchor属性,可以做到很完美
每个控件都要设计,而Resize只需简单代码,上世纪方法不见得是好方法,谦虚点,哥哥

#15


个人所好问题,有写人喜欢用代码来实现,有写人喜欢用现有的方法&属性来实现。

#1


望大侠们提出正解,不是某一个,而是所有的,包括动态生成的控件在内,都可以自动调整
大小

#2


设Dock或Anchor属性又或者自己写代码去控制

#3


设Dock或Anchor属性,不能解决动态添加的控件问题
程序控制怎么控制阿,大侠

resizeform如何写?

#4


动态添加也可以设它的Dock或Anchor属性

#5


给你一个图片随窗体大小而改变大小的例子。我想控件也和图片一样的吧!你看看改一下就行了!
Private Sub frmMain_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.SizeChanged
        If Me.WindowState = FormWindowState.Minimized OrElse Me.ClientSize.Width < 10 OrElse Me.ClientSize.Height < 10 Then
            Return
        End If
        If System.IO.File.Exists(Application.StartupPath & "\Back.jpg") Then
            Me.BackgroundImage = New Drawing.Bitmap(Image.FromFile(Application.StartupPath & "\Back.jpg"), Me.ClientSize.Width, Me.ClientSize.Height)
        End If
    End Sub

#6


你要计算好比例(也就是窗体变化后的缩放比例),然后在form的sizechange里面,把所有控件都按照比例来缩放就是了。

#7



我的解决方案是这样子的,不知道还有没有更好的方法,谢谢各位大侠赏光
Dim WBaseValue As Double
    Dim HBaseValue As Double


    Private Sub Form1_Resize(ByVal sender As Object, _
     ByVal e As System.EventArgs) Handles MyBase.Resize
        Dim X As Integer
        Dim Y As Integer
        Dim control As Control
        For Each control In Me.Controls

            X = control.Location.X * Me.Width * WBaseValue
            Y = control.Location.Y * Me.Height * HBaseValue
            control.Location = New System.Drawing.Point(X, Y)
            control.Height = control.Height * Me.Height * HBaseValue
            control.Width = control.Width * Me.Width * WBaseValue

        Next

        WBaseValue = 1 / Me.Width
        HBaseValue = 1 / Me.Height

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        WBaseValue = 1 / Me.Width
        HBaseValue = 1 / Me.Height

    End Sub

#8


hamadou(闵峰--迎接2006) 正解

#9


用好Dock和Anchor属性就可以了,好好研究吧.自己计算比例缩放简直是.......

#10


我也建议用DOCK,按钮太大会很难看的

#11


同意  W_W_Q(韦一笑)  的。

.net都出来这么久了,还有人完全是上个世纪的做法,估计是现在市面上的入门书太滥、内容简单地翻新过时的开发平台的代码造成的误导的缘故。

#12


用好Dock和Anchor属性,有时候,特别是Button会变得特别难看

#13


设Dock或Anchor属性,可以做到很完美

#14


设Dock或Anchor属性,可以做到很完美
每个控件都要设计,而Resize只需简单代码,上世纪方法不见得是好方法,谦虚点,哥哥

#15


个人所好问题,有写人喜欢用代码来实现,有写人喜欢用现有的方法&属性来实现。