RT,求助

解决方案 »

  1.   

    捕获MouseDown,MouseUp,MouseMove消息,在MouseDown时判断,如果处于边界时,设置一个标志,然后MouseMove的时候,改变PictureBox的大小。MouseUp的时候,终止处理。
      

  2.   

    http://blog.csdn.net/zgke/archive/2009/01/06/3718989.aspx
      

  3.   


    没用的鼠标一移出范围就失效了.1 在mousedown里捕获鼠标,使之不超之矩形范围
    2 Sendmessage发送控制指令,使其改变大小上个月写过一个VB.NET的,不要知道你要不要
      

  4.   

    移除范围失效是什么意思呢?不太明白,可以的话给我发一个吧,[email protected]
      

  5.   

    1.联合处理Form的MouseMove消息。
    2.SendMessage改变其大小与设置其位置和高度、宽度没有区别。同样需要鼠标移动消息。
      

  6.   

        <DllImport("user32.dll", EntryPoint:="SendMessage")> _
    Public Function SendMessage(ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
        End Function
        <DllImport("user32.dll", EntryPoint:="ReleaseCapture")> _
        Public Function ReleaseCapture() As Integer
        End Function以上写在Moudel里MouseDown()
                If e.Button = Windows.Forms.MouseButtons.Left Then
                    ReleaseCapture()
                    If sEditMode = True Then
                        If e.X <= 5 AndAlso e.Y <= 5 Then
                            SendMessage(sender.Handle.ToInt32(), WM_SysCommand, &HF004, 0)
                        ElseIf e.X <= 5 AndAlso e.Y >= Me.Height - 5 Then
                            SendMessage(sender.Handle.ToInt32(), WM_SysCommand, &HF007, 0)
                        ElseIf e.X >= Me.Width - 5 AndAlso e.Y <= 5 Then
                            SendMessage(sender.Handle.ToInt32(), WM_SysCommand, &HF005, 0)
                        ElseIf e.X >= Me.Width - 5 AndAlso e.Y >= Me.Height - 5 Then
                            SendMessage(sender.Handle.ToInt32(), WM_SysCommand, &HF008, 0)
                        ElseIf e.X >= 5 AndAlso e.X <= Me.Width - 5 AndAlso e.Y <= 5 Then
                            SendMessage(sender.Handle.ToInt32(), WM_SysCommand, &HF003, 0)
                        ElseIf e.X >= 5 AndAlso e.X <= Me.Width - 5 AndAlso e.Y >= Me.Height - 5 Then
                            SendMessage(sender.Handle.ToInt32(), WM_SysCommand, &HF006, 0)
                        ElseIf e.X <= 5 AndAlso e.Y >= 5 AndAlso e.Y <= Me.Height - 5 Then
                            SendMessage(sender.Handle.ToInt32(), WM_SysCommand, &HF001, 0)
                        ElseIf e.X >= Me.Width - 5 AndAlso e.Y >= 5 AndAlso e.Y <= Me.Height - 5 Then
                            SendMessage(sender.Handle.ToInt32(), WM_SysCommand, &HF002, 0)
                        Else
                            SendMessage(sender.Handle.ToInt32(), WM_SysCommand, SC_MOVE, 0)
                        End If
                    End If
                End IfMouseMOve()
                If e.X <= 5 AndAlso e.Y <= 5 Then
                    Me.Cursor = Cursors.SizeNWSE
                ElseIf e.X <= 5 AndAlso e.Y >= Me.Height - 5 Then
                    Me.Cursor = Cursors.SizeNESW
                ElseIf e.X >= Me.Width - 5 AndAlso e.Y <= 5 Then
                    Me.Cursor = Cursors.SizeNESW
                ElseIf e.X >= Me.Width - 5 AndAlso e.Y >= Me.Height - 5 Then
                    Me.Cursor = Cursors.SizeNWSE
                ElseIf e.X >= 5 AndAlso e.X <= Me.Width - 5 AndAlso e.Y <= 5 Then
                    Me.Cursor = Cursors.SizeNS
                ElseIf e.X >= 5 AndAlso e.X <= Me.Width - 5 AndAlso e.Y >= Me.Height - 5 Then
                    Me.Cursor = Cursors.SizeNS
                ElseIf e.X <= 5 AndAlso e.Y >= 5 AndAlso e.Y <= Me.Height - 5 Then
                    Me.Cursor = Cursors.SizeWE
                ElseIf e.X >= Me.Width - 5 AndAlso e.Y >= 5 AndAlso e.Y <= Me.Height - 5 Then
                    Me.Cursor = Cursors.SizeWE
                Else
                    Me.Cursor = Cursors.SizeAll
                End If
      

  7.   

    以上是我通过SendMessage来使系统来调整目标控件.这种方法与目标窗体无关,非常方便.不足之处是:
    如果用户在Windows中开启了在桌面属性=>高级=>性能=>"移动窗口时显示内容",效果会实时显示,但如果没有开启,则移动时出现的是一个逆框.