首页 > 解决方案 > 更改鼠标指针未在 c# WinForms 中维护

问题描述

我有一个只有一个按钮的 WinForms 应用程序。我创建了这个应用程序来演示在一个更大的应用程序上发生了什么。

该按钮将布尔值从 true 更改为 false,并设置鼠标指针。

private bool ChangeMouse = true;

private void button1_Click(object sender, EventArgs e)
{
    Console.WriteLine("CURSOR-TOP: " + System.Windows.Forms.Cursor.Current.ToString());

    if (ChangeMouse)
    {
        ChangeMouse = false;
        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Cross;
    }
    else
    {
        ChangeMouse = true;
        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
    }

    Console.WriteLine("CURSOR-BOTTOM: " + System.Windows.Forms.Cursor.Current.ToString());
    Console.WriteLine("");
}

这是我点击按钮 4 次时得到的结果:

CURSOR-TOP: [Cursor: Default]
CURSOR-BOTTOM: [Cursor: Cross]

CURSOR-TOP: [Cursor: Default]
CURSOR-BOTTOM: [Cursor: Default]

CURSOR-TOP: [Cursor: Default]
CURSOR-BOTTOM: [Cursor: Cross]

CURSOR-TOP: [Cursor: Default]
CURSOR-BOTTOM: [Cursor: Default]

可以看出,CURSOR-TOP 的值始终是默认光标。为什么不保持对当前光标的更改???

标签: c#winforms

解决方案


必须使用 this.Cursor 而不是 System.Windows.Forms.Cursor.Current。

至于为什么?我真的不知道。


推荐阅读