c# - 在Windows窗体中如何检查光标位置是否超出图表控制范围?

标签 c# winforms mouseevent cursor-position

我正在 MS 图表 中显示工具提示。从图表控件移动到其他控件或形成可用空间时,工具提示不会被隐藏。

如何在windows窗体中检查光标位置是否超出图表控制范围?

我尝试了下面的代码,它对我不起作用。

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (!chart.ClientRectangle.Contains(chart.PointToClient(new Point(e.X,e.Y))))
    {
        if (ToolTip != null)
            ToolTip.Hide(chart);
     }
 } 

我进行了跟踪并检查,如果我从图表控件移动到窗体可用空间,该事件就会触发,只有当从图表移动到其他控件时,Form1_MouseMove 才不会被调用。

如何解决我的问题?

最佳答案

尝试处理目标控件上的 MouseEnterMouseLeave 事件(您的例子中的图表,我的例子中的按钮)。

using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApp
{
    public partial class Form1 : Form
    {
        private const string mouseIsOver = "Mouse is over";
        private const string mouseIsOutside = "Mouse is outside";

        public Form1()
        {
            InitializeComponent();
            var button = new Button { Text = mouseIsOutside, AutoSize = true, Location = new Point(10, 10) };
            button.MouseEnter += (sender, e) => button.Text = mouseIsOver;
            button.MouseLeave += (sender, e) => button.Text = mouseIsOutside;
            this.Controls.Add(button);

        }
    }
}

enter image description here

关于c# - 在Windows窗体中如何检查光标位置是否超出图表控制范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56495175/

相关文章:

创建位图时 C# 内存不足

c# - 错误处理整个类

c# - 当我从列表 : why half time that's select 1st value as well with 2nd event? 中选择一个值时的 ListBox

javascript - Angular App 有很多事件处理程序,事件似乎有很大的开销?

javascript - 当用户点击并滚动时,防止在移动设备上触发 pointdown 事件

dom - 在Dart中如何获取被点击目标对象的ID?

c# - 在 Microsoft.Graph SDK 中将 TimeOut 设置为更高的值

c# - 为什么类型对象中的 1 不能转换为 double

c# - #SNMP - 如何使用 SharpSNMP 编译 MIB 文件?

c# - 从 2 个下拉列表中获取值的 Controller 操作