拖動

2012-11-08 37 views
2

時比較的WinForms控制倉位我有一個包含名爲button1一個按鈕,並呼籲panel1具有色綠一個面板的小程序。到目前爲止,該計劃允許你拖button1周圍的形式。我想擴大這個項目,所以當button1的面板面板的顏色變爲紅色下降。拖動

形式:

enter image description here

至今代碼:

System.Drawing.Point OldPosition; 

public Form1() 
{ 
    InitializeComponent(); 
} 

private void button1_MouseDown(object sender, MouseEventArgs e) 
{ 
    //Only prepare if the button click down is the left button 
    if (e.Button == MouseButtons.Left) 
    { 
     //Store the current mouse location 
     OldPosition = e.Location; 
     //Change the mouse cursor if you want 
     button1.Cursor = Cursors.Hand; 
    } 
} 

private void button1_MouseMove(object sender, MouseEventArgs e) 
{ 
    //Only move if the left button still down 
    if (e.Button == MouseButtons.Left) 
    { 
     button1.Location = new Point(button1.Location.X + (e.X - OldPosition.X), button1.Location.Y + (e.Y - OldPosition.Y)); 
    } 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    panel1.BackColor = Color.Green;   
} 

private void panel1_MouseEnter(object sender, EventArgs e) 
{ 
    if (button1.Location == panel1.Location) 
     panel1.BackColor = Color.Red; //im not sure how to do this part 
} 

回答

2

嘗試下面的代碼:

private void button1_MouseMove(object sender, MouseEventArgs e) 
{ 
    //Only move if the left button still down 
    if (e.Button == MouseButtons.Left) 
    { 
     button1.Location = new Point(button1.Location.X + (e.X - OldPosition.X), button1.Location.Y + (e.Y - OldPosition.Y)); 

     //CHECK IF NEW LOCATION IS WITHIN PANEL BOUNDS 
     if (panel1.Bounds.Contains(button1.Location)) 
      panel1.BackColor = Color.Red; 
     else 
      panel1.BackColor = Color.Green; 
    } 
} 

而且你可能需要設計師「SEND TO BACK」的panel1控制,否則按鈕將不可如果它通過面板可見。

+0

感謝隊友。我已經把面板寄回去了 – Tacit