【发布时间】:2017-02-08 10:00:44
【问题描述】:
我想要制作无边框的表格。 我的问题是,当我想要调整表单大小(在左侧或顶部)时,另一侧的表单正在跳跃。 (见附图。) 我尝试了 SetWindowPos 和 WndProc 但类似的问题。
问题:如何使用 ResizeRedraw 和 Doublebuffering 调整无边框表单的大小而不会出现故障?
这是我的简化代码:
Public Class Form1
Public Sub New()
DoubleBuffered = True
SetStyle(ControlStyles.ResizeRedraw, True)
FormBorderStyle = FormBorderStyle.None
End Sub
Dim down As Boolean = False
Dim _Right As Integer = 0
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseDown
_Right = Right
down = True
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseMove
If down Then
Dim xy As Point = PointToScreen(e.Location)
SetBounds(xy.X - 2, Me.Top, _Right - xy.X - 2, Height)
End If
End Sub
End Class
操作系统:Windows 7
开发:VS 2015、VB、.NET 2.0
【问题讨论】:
-
那段代码对我来说很好用,你说那是简化的......?
-
是的,简化了,但是这个简化的代码在调整表单大小时会出现故障。但我看到这个故障都是无边界的应用程序。例如Visual Studio 2015,便签......
-
正如我所说,我从上面照原样复制它,它工作正常。你确定你没有其他活动的东西可以在你没有向我们展示的其他方向上伸展/移动。
标签: vb.net forms winforms visual-glitch borderless