我有这个我想要启用的System.Windows.Forms.Panel,这样如果用户点击并拖动鼠标拖动窗口到.
我可以这样做吗?我必须实施多个活动吗?
Bra*_*avo 30
最适合我的解决方案是使用非托管代码,与HatSoft发布的答案不同,它可以为您提供平滑的窗口移动.
3个小步骤在Panel运动上拖动窗口
using System.Runtime.InteropServices;
Run Code Online (Sandbox Code Playgroud)
在你的课程中添加这六行
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();
Run Code Online (Sandbox Code Playgroud)
Panel上的MouseMove事件应如下所示
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
发布它有点晚了:),谁知道我们将来可能会再次需要它.
您可以通过使用面板的 MouseMove 事件来实现它
示例应该是这样的(抱歉还没有测试过)
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Location = new Point(Cursor.Position.X + e.X , Cursor.Position.Y + e.Y);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17625 次 |
| 最近记录: |