- 首先在Form中加入一個按鈕,在此範例名稱設定為button1。
- 在Form類別中增加一個成員屬性
private Point mouse_offset;
- 註冊button1的MouseDown事件,加入下面程式碼記錄滑鼠點擊位置(此位置是以按鈕左上角為原點的座標)
private void button1_MouseDown(object sender, MouseEventArgs e) { mouse_offset = new Point(-e.X, -e.Y); }
- 註冊button1的MouseMove事件,加入下面程式碼
1 2 3 4 5 6 7 8 9 10
private void button1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Button btn = (Button)sender; Point mousePos = PointToClient(Control.MousePosition); mousePos.Offset(mouse_offset.X, mouse_offset.Y); btn.Location = mousePos; } }
使用者可能是點擊按鈕左上角以外的位置,因此需使用第七行做Offset修正,否則移動放開後按鈕總會落在滑鼠的右下方。
2015/1/5
【C#】讓控制元件可在視窗中自由移動,以按鈕為例
想讓控制元件(Control Component,如:按鈕、標籤...等)可以在視窗中自由移動只需要註冊MouseDown與MouseMove兩個事件並加入一些程式碼即可達成:
訂閱:
張貼留言 (Atom)
請問 如果我今天只想控制單位只能 平移 應該怎麼做
回覆刪除