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
控件“发送到后面”,否则按钮在面板上方将不可见