见到很多窗口程序(例如浏览器、Windows画图程序等)都能自适应屏幕工具栏的有无变化,即当显示windows工具栏时该程序窗口高度为:屏幕高度-工具栏高度;当隐藏windows工具栏时该程序窗口高度自动伸展为屏幕高度,反之亦然。自己设计的窗体该怎样实现这种功能呢?

解决方案 »

  1.   

    不行的,windowState=Maximized,即使在显示windows工具栏时,窗口尺寸也将充满整个屏幕,而不是“屏幕高度-工具栏高度”,这时窗体最底下的部分会躲在工具栏后面
      

  2.   

    试试这个方法Dim resizeEA As EventArgs = NothingProtected Overrides Sub OnResize(ByVal e As EventArgs)
        If resizeEA Is Nothing Then
            resizeEA = e
            AddHandler Application.Idle, AddressOf OnIdle
        End If
    End SubPrivate Sub OnIdle(ByVal s As Object, ByVal e As EventArgs)
        If Not (resizeEA Is Nothing) Then
            MyBase.OnResize(resizeEA)
            resizeEA = Nothing
            RemoveHandler Application.Idle, AddressOf OnIdle
        End If
    End Sub
      

  3.   

    非常简单
     Me.MaximumSize = My.Computer.Screen.WorkingArea.SizeWorkingArea是屏幕的可用区域
      

  4.   

    可能我没表达清楚,问题的关键不在于怎么弄成那个尺寸,而在于程序运行后,窗体如何根据windows工具栏的隐藏和显示自动适应变化。例如你眼前打开的浏览器,现在它充满了屏幕工作区,在屏幕最下面就是windows工具栏。现在你用鼠标按住工具栏上边沿然后向下拉,使之在屏幕最下方缩为一条线,这时会发现你的浏览器窗口会自动跟着向下扩展到除了那条线之外的整个屏幕。无论4楼还是3楼的方法,那代码总得放在自己程序的某个事件中,可是上述的鼠标向下拉工具栏时,焦点并不在自己的程序上,又怎么触发程序窗体的某个事件呢?
      

  5.   


    这是置窗口最前,跟我的问题有什么关系?
    我要的是拖动扩大或缩小Windows工具栏时,自己的程序窗口能跟着缩放