如何实现picturebox拖拽改变大小 RT,求助 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 捕获MouseDown,MouseUp,MouseMove消息,在MouseDown时判断,如果处于边界时,设置一个标志,然后MouseMove的时候,改变PictureBox的大小。MouseUp的时候,终止处理。 http://blog.csdn.net/zgke/archive/2009/01/06/3718989.aspx 没用的鼠标一移出范围就失效了.1 在mousedown里捕获鼠标,使之不超之矩形范围2 Sendmessage发送控制指令,使其改变大小上个月写过一个VB.NET的,不要知道你要不要 移除范围失效是什么意思呢?不太明白,可以的话给我发一个吧,[email protected] 1.联合处理Form的MouseMove消息。2.SendMessage改变其大小与设置其位置和高度、宽度没有区别。同样需要鼠标移动消息。 <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 以上是我通过SendMessage来使系统来调整目标控件.这种方法与目标窗体无关,非常方便.不足之处是:如果用户在Windows中开启了在桌面属性=>高级=>性能=>"移动窗口时显示内容",效果会实时显示,但如果没有开启,则移动时出现的是一个逆框. 怎么粘贴无格式文本 C#里除了 Datagirdview可以接收数据源 还有什么吗? udp接收数据 一个简单问题:C#中如何给某个资源加上共享锁? DesignSurface问题 关于随机函数 我在1024*768下开发的应用 在 1600*1200下出显示出问题了,大家救我!! 各位师兄,那里有关于分布式数据库开发的资料啊?拜托!!!谢谢! 2003年,有什么.Net的新书吗(C#方面) 请问有没有人开发过短消息网关系统啊? 如何用条码字体生成条码? 大家好,谁有计算器(C#版)的源码
没用的鼠标一移出范围就失效了.1 在mousedown里捕获鼠标,使之不超之矩形范围
2 Sendmessage发送控制指令,使其改变大小上个月写过一个VB.NET的,不要知道你要不要
2.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
如果用户在Windows中开启了在桌面属性=>高级=>性能=>"移动窗口时显示内容",效果会实时显示,但如果没有开启,则移动时出现的是一个逆框.