显示ToolStripDropDown时捕获鼠标消息

时间:2012-10-18 08:41:04

标签: c# winforms toolstripdropdown mousecapture

我正在尝试创建一个包含自定义控件的“工具提示”。我使用ToolStripDropDown实现了它,它可以满足我的需要 - 当用户点击其他地方时关闭,或者激活另一个窗口等。

但是,即使显示MouseMove,我也希望能够在父控件中获取ToolStripDropDown事件。我尝试在不同阶段设置父控件的Capture属性(在显示下拉列表之前,在其Opened事件处理程序等中),但它总是立即设置为false。有没有办法(不一定使用Capture属性)来获取父控件中的MouseMove事件?不,我不想考虑丑陋的黑客,比如使用计时器并定期检查鼠标位置。

1 个答案:

答案 0 :(得分:0)

如果您想一直知道鼠标位置,那么您应该为父控件和MouseDown控件注册ToolStripDropDown事件,如下所示:

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    lblPosition.Text = e.Location.ToString();
}

private void toolStripDropDownButton2_MouseMove(object sender, MouseEventArgs e)
{
    lblPosition.Text = e.Location.X + toolStripDropDownButton2.Bounds.Location.X + ", " + toolStripDropDownButton2.Bounds.Location.Y + e.Location.Y;
}

对于ToolStripDropDown,您应该计算其父级的相对位置