如何在按下鼠标时跟踪鼠标输入事件 c# visual studio?
How to track mouse enter event while mouse is pressed c# visual studio?
我尝试实现以下目标:
按下鼠标时->如果鼠标进入面板,颜色会改变
当鼠标松开时 -> 鼠标进入时面板不会改变。
--问题:按下鼠标时,鼠标进入事件没有反应
我该如何解决?
//for all panels in the menu
private void walletpanel0_MouseEnter(object sender, EventArgs e)
{
if ( mouseDown && previousPanel != (Panel)sender)
{
Panel p = (Panel)sender;
p.BackColor = Color.FromArgb(255, 26, 41, 56);
previousPanel.BackColor = Color.FromArgb(255, 44, 62, 73);
previousPanel = p;
}
}
private void walletpanel0_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
//to select the panel when clicked on it
if (previousPanel != (Panel)sender)
{
Panel p = (Panel)sender;
p.BackColor = Color.FromArgb(255, 26, 41, 56);
previousPanel.BackColor = Color.FromArgb(255, 44, 62, 73);
previousPanel = p;
}
}
据我所知,按下鼠标按钮时不会触发 MouseEnter
、MouseMove
和 MouseLeave
事件。释放按钮后,如果在按下按钮时鼠标移动触发订阅事件,则会触发订阅事件。
基本问题是,当 MouseDown
事件发生在 Control
上时,Control
"captures" 鼠标在按下按钮之前不会释放它已发布,这意味着其他 Controls
.
未收到移动事件
假设您的所有 Panels
都订阅了它,以下事件处理程序应该可以帮助您:
private void Panels_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.None)
{
Control control = (Control)sender;
if (control.Capture)
control.Capture = false;
}
}
我尝试实现以下目标: 按下鼠标时->如果鼠标进入面板,颜色会改变 当鼠标松开时 -> 鼠标进入时面板不会改变。
--问题:按下鼠标时,鼠标进入事件没有反应
我该如何解决?
//for all panels in the menu
private void walletpanel0_MouseEnter(object sender, EventArgs e)
{
if ( mouseDown && previousPanel != (Panel)sender)
{
Panel p = (Panel)sender;
p.BackColor = Color.FromArgb(255, 26, 41, 56);
previousPanel.BackColor = Color.FromArgb(255, 44, 62, 73);
previousPanel = p;
}
}
private void walletpanel0_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
//to select the panel when clicked on it
if (previousPanel != (Panel)sender)
{
Panel p = (Panel)sender;
p.BackColor = Color.FromArgb(255, 26, 41, 56);
previousPanel.BackColor = Color.FromArgb(255, 44, 62, 73);
previousPanel = p;
}
}
据我所知,按下鼠标按钮时不会触发 MouseEnter
、MouseMove
和 MouseLeave
事件。释放按钮后,如果在按下按钮时鼠标移动触发订阅事件,则会触发订阅事件。
基本问题是,当 MouseDown
事件发生在 Control
上时,Control
"captures" 鼠标在按下按钮之前不会释放它已发布,这意味着其他 Controls
.
假设您的所有 Panels
都订阅了它,以下事件处理程序应该可以帮助您:
private void Panels_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button != MouseButtons.None)
{
Control control = (Control)sender;
if (control.Capture)
control.Capture = false;
}
}