C# 拖动时比较WinForms控件的位置

C# 拖动时比较WinForms控件的位置,c#,.net,winforms,visual-studio-2010,drag-and-drop,C#,.net,Winforms,Visual Studio 2010,Drag And Drop,我有一个小程序,其中包含一个名为button1的按钮和一个名为panel1的面板,该面板的颜色为绿色。到目前为止,该程序允许您在表单周围拖动按钮1。我正在尝试扩展此程序,因此当面板上的按钮1被删除时,面板将变为红色 表格: 迄今为止的守则: System.Drawing.Point OldPosition; public Form1() { InitializeComponent(); } private void button1_MouseDown(object sender,

我有一个小程序,其中包含一个名为
button1
的按钮和一个名为
panel1
的面板,该面板的颜色为绿色。到目前为止,该程序允许您在表单周围拖动
按钮1
。我正在尝试扩展此程序,因此当面板上的
按钮1
被删除时,面板将变为红色

表格:

迄今为止的守则:

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
}
请尝试以下代码:

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;
    }
}
此外,在designer中,您可能需要将
panel1
控件“发送到后面”,否则按钮在面板上方将不可见