Foxtable(狐表)用户栏目专家坐堂 → 求助 窗口最小化最大化问题


  共有3510人关注过本帖树形打印复制链接

主题:求助 窗口最小化最大化问题

帅哥哟,离线,有人找我吗?
jackyfashion
  11楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5085 威望:0 精华:0 注册:2013/10/7 22:27:00
  发帖心情 Post By:2017/8/29 23:11:00 [只看该作者]

Public Property resizeDir() As ResizeDirection

Get

Return _resizeDir

End Get

Set(ByVal value As ResizeDirection)

_resizeDir = value

 

'Change cursor

Select Case value

    Case ResizeDirection.Left

        myform.Cursor = System.Windows.Forms.Cursors.SizeWE

       

    Case ResizeDirection.Right

        myform.Cursor = System.Windows.Forms.Cursors.SizeWE

       

    Case ResizeDirection.Top

        myform.Cursor = System.Windows.Forms.Cursors.SizeNS

       

    Case ResizeDirection.Bottom

        myform.Cursor = System.Windows.Forms.Cursors.SizeNS

       

    Case ResizeDirection.BottomLeft

        myform.Cursor = System.Windows.Forms.Cursors.SizeNESW

       

    Case ResizeDirection.TopRight

        myform.Cursor = System.Windows.Forms.Cursors.SizeNESW

       

    Case ResizeDirection.BottomRight

        myform.Cursor = System.Windows.Forms.Cursors.SizeNWSE

       

    Case ResizeDirection.TopLeft

        myform.Cursor = System.Windows.Forms.Cursors.SizeNWSE

       

    Case Else

        myform.Cursor = System.Windows.Forms.Cursors.Default

End Select

End Set

End Property

 

Public Const WM_NCLBUTTONDOWN As Integer = &HA1

Public Const HTBORDER As Integer = 18

Public Const HTBOTTOM As Integer = 15

Public Const HTBOTTOMLEFT As Integer = 16

Public Const HTBOTTOMRIGHT As Integer = 17

Public Const HTCAPTION As Integer = 2

Public Const HTLEFT As Integer = 10

Public Const HTRIGHT As Integer = 11

Public Const HTTOP As Integer = 12

Public Const HTTOPLEFT As Integer = 13

Public Const HTTOPRIGHT As Integer = 14

 

 



 回到顶部
帅哥哟,离线,有人找我吗?
jackyfashion
  12楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5085 威望:0 精华:0 注册:2013/10/7 22:27:00
  发帖心情 Post By:2017/8/29 23:12:00 [只看该作者]

Public Sub MoveForm()

ReleaseCapture()

SendMessage(myform.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)

End Sub

 

Public Sub ResizeForm(ByVal direction As ResizeDirection)

Dim dir As Integer = -1

Select Case direction

    Case ResizeDirection.Left

        dir = HTLEFT

    Case ResizeDirection.TopLeft

        dir = HTTOPLEFT

    Case ResizeDirection.Top

        dir = HTTOP

    Case ResizeDirection.TopRight

        dir = HTTOPRIGHT

    Case ResizeDirection.Right

        dir = HTRIGHT

    Case ResizeDirection.BottomRight

        dir = HTBOTTOMRIGHT

    Case ResizeDirection.Bottom

        dir = HTBOTTOM

    Case ResizeDirection.BottomLeft

        dir = HTBOTTOMLEFT

End Select

 

If dir <> -1 Then

    ReleaseCapture()

    SendMessage(myform.Handle, WM_NCLBUTTONDOWN, dir, 0)

End If

End Sub

 

 

Public Sub myform_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)

If e.Button = Windows.Forms.MouseButtons.Left And myform.WindowState <> Windows.Forms.FormWindowState.Maximized Then

    ResizeForm(resizeDir)

End If

End Sub

 

Public Sub myform_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)

'Calculate which direction to resize based on mouse position

 

If e.Location.X < BorderWidth And e.Location.Y < BorderWidth Then

    resizeDir = ResizeDirection.TopLeft

   

ElseIf e.Location.X < BorderWidth And e.Location.Y > myform.Height - BorderWidth Then

    resizeDir = ResizeDirection.BottomLeft

   

ElseIf e.Location.X > myform.Width - BorderWidth And e.Location.Y > myform.Height - BorderWidth Then

    resizeDir = ResizeDirection.BottomRight

   

ElseIf e.Location.X > myform.Width - BorderWidth And e.Location.Y < BorderWidth Then

    resizeDir = ResizeDirection.TopRight

   谢谢老师!


 回到顶部
帅哥,在线噢!
有点蓝
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106563 积分:541980 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/29 23:39:00 [只看该作者]

上传实例测试

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/30 9:30:00 [只看该作者]

上传具体例子,说明你要做什么功能,目前有什么问题。

 回到顶部
帅哥哟,离线,有人找我吗?
jackyfashion
  15楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5085 威望:0 精华:0 注册:2013/10/7 22:27:00
  发帖心情 Post By:2017/8/30 23:16:00 [只看该作者]

老师:

您好!

我加着 

e.Form.BaseForm.ShowInTaskBar = True

窗口最大化都是挡住任务栏

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

这是窗口最大化,看不到任务栏

 

请老师指教!

谢谢!

[此贴子已经被作者于2017/8/30 23:17:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/31 8:41:00 [只看该作者]

设置好窗口高度啊

 

Dim frm = e.Form.baseform      

frm.windowstate = 0
frm.left = 0
frm.top = 0
frm.width = SysInfo.ScreenWidth
frm.height = SysInfo.WorkingAreaHeight


 回到顶部
帅哥哟,离线,有人找我吗?
jackyfashion
  17楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5085 威望:0 精华:0 注册:2013/10/7 22:27:00
  发帖心情 Post By:2017/8/31 20:59:00 [只看该作者]

谢谢老师!!!


 回到顶部
帅哥哟,离线,有人找我吗?
jackyfashion
  18楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5085 威望:0 精华:0 注册:2013/10/7 22:27:00
  发帖心情 Post By:2017/8/31 22:40:00 [只看该作者]

有点蓝老师:

您好!

我原来的窗口可以最大化,会挡住任务栏 但可以灰复原来的窗口尺寸

代码:

 

If e.Form.BaseForm.WindowState =  System.Windows.Forms.FormWindowState.Maximized Then

   e.Form.BaseForm.WindowState =  System.Windows.Forms.FormWindowState.Normal

 

   e.Sender.Image = getimage("LLL.png")

Else

    e.Form.BaseForm.WindowState =  System.Windows.Forms.FormWindowState.Maximized

    e.Sender.Image = getimage("LL.png")

End If

原来窗口的尺寸


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


 最大化挡住任务栏


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

 

现在的窗口可以最大化,不会挡住任务栏,但无法灰复原来的窗口尺寸

代码:

Dim frm = e.Form.baseform
If frm.height <> SysInfo.WorkingAreaHeight Then   
    frm.windowstate = 0
    frm.left = 0
    frm.top = 0
    frm.width = SysInfo.ScreenWidth
    frm.height = SysInfo.WorkingAreaHeight   
    e.Sender.Image = getimage("LLL.png")
Else
    frm.windowstate = 0
    frm.left = 0
    frm.top = 0
    e.Form.ExtendSize = New Size(1540,940)   
    e.Sender.Image = getimage("LL.png")
End If
 

可以最大化,无法灰复原来的窗口尺寸


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

请老师指教!怎样改代码才可以灰复原来窗口的尺寸?

谢谢老师!!!

[此贴子已经被作者于2017/8/31 22:41:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/31 22:59:00 [只看该作者]

Dim frm = e.Form.baseform
If frm.height <> SysInfo.WorkingAreaHeight Then   
    frm.windowstate = 0
    frm.left = 0
    frm.top = 0
    frm.width = SysInfo.ScreenWidth
    frm.height = SysInfo.WorkingAreaHeight   
    e.Sender.Image = getimage("LLL.png")
Else
    frm.windowstate = 0
    frm.left = 0
    frm.top = 0
    frm.width = 500
    frm.height =  500
    e.Sender.Image = getimage("LL.png")
End If

 

无边框窗口,参考这里

 

 下载信息  [文件大小:348.0 KB  下载次数:1561]
图片点击可在新窗口打开查看点击浏览该文件:无边框窗体实现基本操作.table


 回到顶部
帅哥哟,离线,有人找我吗?
jackyfashion
  20楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:655 积分:5085 威望:0 精华:0 注册:2013/10/7 22:27:00
  发帖心情 Post By:2017/9/1 20:30:00 [只看该作者]

谢谢老师指导!!!

 

谢谢!!!


 回到顶部
总数 20 上一页 1 2