我有這個System.Windows.Forms.Panel,我想啓用,以便如果用戶單擊並拖動鼠標拖動窗口左右。如何在Panel移動窗體窗口中製作mousedrag?
我可以這樣做嗎?我必須執行多個事件嗎?
我有這個System.Windows.Forms.Panel,我想啓用,以便如果用戶單擊並拖動鼠標拖動窗口左右。如何在Panel移動窗體窗口中製作mousedrag?
我可以這樣做嗎?我必須執行多個事件嗎?
您可以通過面板的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);
}
}
最適合我的解決方案是使用非託管實現它代碼,它可以讓你平滑的移動窗口,不像HatSoft發佈的答案。
3個小步拖動窗口面板運動
using System.Runtime.InteropServices;
添加這些六行類
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();
內和麪板的MouseMove事件應該是這樣的
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
貼吧有點遲了:),誰知道我們未來可能還需要它。
Bravo的代碼工作得非常好,但我無法得到這個工作,直到我明確地讓我的面板的panel's-> properties-> event部分中的MouseMove事件啓用時,我想移動。
暗示 - WinForms 101.這篇文章只是一個評論。 – LarsTech 2017-05-05 20:57:40
使用面板的MouseMove事件。這不是航天科技。 – 2012-07-07 22:42:36