相关疑难解决方法(0)

在禁用的控件上显示工具提示

当鼠标悬停在禁用的控件上时,我正在尝试显示工具提示.由于禁用的控件不处理任何事件,我必须在父表单中执行此操作.我选择通过处理MouseMove父表单中的事件来完成此操作.这是完成工作的代码:

    void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        m_toolTips.SetToolTip(this, "testing tooltip on " + DateTime.Now.ToString());
        string tipText = this.m_toolTips.GetToolTip(this);
        if ((tipText != null) && (tipText.Length > 0))
        {
            Point clientLoc = this.PointToClient(Cursor.Position);
            Control child = this.GetChildAtPoint(clientLoc);
            if (child != null && child.Enabled == false)
            {
                m_toolTips.ToolTipTitle = "MouseHover On Disabled Control";
                m_toolTips.Show(tipText, this, 10000);
            }
            else
            {
                m_toolTips.ToolTipTitle = "MouseHover Triggerd";
                m_toolTips.Show(tipText, this, 3000);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

代码确实处理禁用控件的工具提示显示.问题是当鼠标悬停在禁用的控件上时,工具提示会一直关闭并重新显示.从我在工具提示中添加的显示时间开始,当鼠标位于父窗体上方时,MouseMove事件大约每3秒调用一次,因此工具提示每3秒更新一次.但是当鼠标在禁用的控件上时,工具提示每1秒刷新一次.此外,当工具提示在表单上方刷新时,只有文本会通过简短的闪存进行更新.但是当工具提示在禁用的控件上方刷新时,工具提示窗口会关闭,就像鼠标移动到启用的控件中一样,工具提示应该关闭.但随后工具提示立即重新出现.

有人能告诉我为什么会这样吗?谢谢.

c# tooltip winforms

25
推荐指数
3
解决办法
4万
查看次数

父控制鼠标使用子控件输入/离开事件

我有一个C#.NET 2.0 WinForms应用程序.我的应用程序有一个控件,它是两个子控件的容器:标签和某种编辑控件.您可以这样想,外框是父控件:

+---------------------------------+ 
| [Label Control]  [Edit Control] |
+---------------------------------+

我试图在鼠标进入或离开父控件时执行某些操作,但我不在乎鼠标是否移动到其中一个子控件中.我想要一个标志来表示"鼠标在父或子的内部"和"鼠标移动到父控件边界之外".

我已尝试在父控件和两个子控件上处理MouseEnter和MouseLeave,但这意味着当鼠标在控件上移动时,操作会多次开始和结束.换句话说,我明白了:

Parent.OnMouseEnter      (start doing something)
Parent.OnMouseLeave      (stop)
Child.OnMouseEnter       (start doing something)
Child.OnMouseLeave       (stop)
Parent.OnMouseEnter      (start doing something)
Parent.OnMouseLeave      (stop)

中间的OnMouseLeave事件会导致一些不良影响,因为我正在做的事情开始然后停止.我想避免这种情况.

我不想捕获鼠标,因为父控件需要鼠标移动,因为子控件需要鼠标事件,我想要菜单和其他快捷键才能工作.

有没有办法在.NET框架内执行此操作?或者我需要使用Windows鼠标挂钩?

.net c# mouse events winforms

21
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×2

winforms ×2

.net ×1

events ×1

mouse ×1

tooltip ×1