我正在製作一個沒有控制框的程序,因爲我不想要一個。我試圖做到這一點,當我點擊任何不是控件的區域時,它都會移動。這是我到目前爲止的代碼:單擊表單時移動表單,而不是頂欄區域
public Form1()
{
InitializeComponent();
BackColor = Color.linen;
TransparencyKey = Color.Linen;
}
bool canMove = false;
int mouseX;
int mouseY;
public void MoveForm()
{
mouseX = MousePosition.X - Form1.ActiveForm.Location.X;
mouseY = MousePosition.Y - Form1.ActiveForm.Location.Y;
Form1.ActiveForm.Location = new Point(mouseX, mouseY);
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
canMove = true;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (canMove)
MoveForm();
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
canMove = false;
}
這適用於移動,但如果窗體位於邊緣,則不會顯示正確。 它所做的另一件事是,當它被拖動時會閃爍。
有沒有什麼辦法可以正確做到這一點?
你閃爍的發生,因爲當你的鼠標按鈕即使您的鼠標位於相同的位置,它也會開始生成鼠標移動事件!它就像一個計時器。一招和移動事件不會停止。 –
處理它的一種方法是使用鼠標的相對位置來屏幕座標。如果相同,請不要調用MoveForm()。 –
@valter你會怎麼做? – Dozer789