在C#,WPF中,我可以在所有窗口中隐藏我的游标吗?

时间:2014-04-30 00:05:31

标签: c# wpf

大家。

当我使用C#,WPF开发应用程序时。我想将光标隐藏在某个特殊区域。无论顶部是哪个应用程序/窗口,光标始终隐藏。

在WPF窗口中,通常我们使用

this.Cursor = System.Windows.Input.Cursors.None;

但是这个问题无法解决我的问题。

我想要这种情况:

我打开窗户,光标在我的窗口消失。然后我在窗口顶部打开一个记事本,光标也消失在记事本中。

这个能做到与否?谢谢。

5 个答案:

答案 0 :(得分:1)

您也可以使用win32 dll。

internal static class WinCursors
{
    [DllImport("user32.dll")]
    private static extern int ShowCursor(bool bShow);


    internal static void ShowCursor()
    {
        while (ShowCursor(true) < 0)
        {

        }
    }

    internal static void HideCursor()
    {
        while (ShowCursor(false) >= 0) //使用这个方法可以关闭光标
        {

        }
    }
}

答案 1 :(得分:0)

如果每个表单上的区域相同,则可以创建一个派生自Form的自定义BaseForm(或类似),并在其上放置一个Label并使用其MouseEnter和MouseLeave事件来隐藏光标。

然后,所有表单都可以从BaseForm而不是Form派生,以便它们都具有此区域。

答案 2 :(得分:0)

只需在mouseEnter活动中使用cursor hide

即可
    private void splitContainer1_Panel2_MouseEnter(object sender, EventArgs e)
    {
       Cursor.Hide();
    }

答案 3 :(得分:0)

您是否尝试过Window Class的活动? 已激活,可聚焦更改或其他相关事件

答案 4 :(得分:0)

顶部的窗口是控制鼠标光标的窗口。因此,实现此目的的唯一方法是将窗口置于顶部,方法是将其设为Topmost

如果你仍想看到它下面的窗户,你可以让你的窗户半透明。将AllowsTransparency属性设置为true,然后将窗口的背景颜色设置为半透明颜色。 (你不能让它100%透明,因为WPF将完全透明视为意义&#34;这里什么都没有,所以将鼠标事件发送到我后面的下一个窗口&#34 ;;但你可以做像#01000000之类的东西如此接近透明,没有人会注意到它。)