【问题标题】:WinForms cursor hidden only on one FormWinForms 光标仅隐藏在一个表单上
【发布时间】:2011-01-29 03:25:16
【问题描述】:

我有一个具有 2 个同时可见的窗体的 C# 应用程序,当鼠标光标仅在其中一个上结束时,我需要隐藏鼠标光标。如果我使用 Cursor.Hide() ,它将对它们都应用更改。

【问题讨论】:

    标签: c# winforms mouse hide


    【解决方案1】:

    您需要通过使用MouseEnterMouseLeave 事件来实现此逻辑,每个事件的形式如下:

        private void frm1_MouseEnter(object sender, EventArgs e)
        {
           Cursor.Hide();
        }
        private void frm1_MouseLeave(object sender, EventArgs e)
        {
           Cursor.Show();
        }
    

    在应该隐藏光标的表单上执行 abobe 并将其添加到应该使光标可见的表单:

        private void frm2_MouseEnter(object sender, EventArgs e)
        {
           Cursor.Show();
        }
    

    【讨论】:

    • 我试过了,谢谢,但是鼠标指针出现在表单内的控件上
    • 尝试删除frm1上的MouseLeave ...但我不知道光标是否会隐藏到其他窗口,直到它进入frm2
    • 这似乎是个好主意,但我不知道为什么有时当鼠标进入窗体时 MouseEnter 事件不会运行,所以,当窗口需要它时消失并出现。
    【解决方案2】:

    您可以制作一个“空白”光标,并设置myForm.Cursor = blankCursor; 这将使该特定表单显示一个特定的光标,它可以是完全透明的。

    【讨论】:

      【解决方案3】:

      您是否尝试过this.Cursor = Cursors.None,而不是Cursor.Hide()

      【讨论】:

      • Cursors.None 作为有效游标不存在
      • 此解决方案(不幸的是)特定于 WPF。显然(尽管未指定)OP 想要 WinForms 解决方案。
      【解决方案4】:

      您可以使用 Control.MouseEnter 和 Control.MouseLeave 事件来触发隐藏或显示光标

      【讨论】:

        【解决方案5】:

        如果您隐藏光标以使用户无法在表单上执行任何操作,请考虑改用this.UseWaitCursor = true;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-21
          • 2010-10-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多