我正在尝试创建一个包含自定义控件的“工具提示”。我使用ToolStripDropDown
实现了它,它可以满足我的需要 - 当用户点击其他地方时关闭,或者激活另一个窗口等。
但是,即使显示MouseMove
,我也希望能够在父控件中获取ToolStripDropDown
事件。我尝试在不同阶段设置父控件的Capture
属性(在显示下拉列表之前,在其Opened
事件处理程序等中),但它总是立即设置为false。有没有办法(不一定使用Capture
属性)来获取父控件中的MouseMove
事件?不,我不想考虑丑陋的黑客,比如使用计时器并定期检查鼠标位置。
答案 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
,您应该计算其父级的相对位置