大家。
当我使用C#,WPF开发应用程序时。我想将光标隐藏在某个特殊区域。无论顶部是哪个应用程序/窗口,光标始终隐藏。
在WPF窗口中,通常我们使用
this.Cursor = System.Windows.Input.Cursors.None;
但是这个问题无法解决我的问题。
我想要这种情况:
我打开窗户,光标在我的窗口消失。然后我在窗口顶部打开一个记事本,光标也消失在记事本中。
这个能做到与否?谢谢。
答案 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
之类的东西如此接近透明,没有人会注意到它。)