C#-固定链接标签手动光标

C#-固定链接标签手动光标,c#,winforms,cursor,linklabel,C#,Winforms,Cursor,Linklabel,我的windows窗体程序中有两个链接标签,它们链接到我的网站。 我去掉了下划线和难看的蓝色,试着把它们修好一点。 但最大的问题仍然存在,这对我来说太令人不安了,我不知道为什么 当您将鼠标悬停在它们上方时,手动光标就是旧的Windows 98手动/链接光标。 有没有办法将其更改为系统光标? 我已经检查了一些关于这个问题的其他链接,但我无法让它工作,所以我决定在这里询问 这里是我的代码,以摆脱下划线顺便说一句: linkLabel1.LinkBehavior=System.Windows.Form

我的windows窗体程序中有两个链接标签,它们链接到我的网站。 我去掉了下划线和难看的蓝色,试着把它们修好一点。 但最大的问题仍然存在,这对我来说太令人不安了,我不知道为什么

当您将鼠标悬停在它们上方时,手动光标就是旧的Windows 98手动/链接光标。 有没有办法将其更改为系统光标? 我已经检查了一些关于这个问题的其他链接,但我无法让它工作,所以我决定在这里询问

这里是我的代码,以摆脱下划线顺便说一句:
linkLabel1.LinkBehavior=System.Windows.Forms.LinkBehavior.NeverUnderline

不幸的是,LinkLabel类被硬编码为使用游标。Hand作为悬停游标

但是,您可以通过向项目中添加类似这样的类来解决此问题:

public class MyLinkLabel : LinkLabel
{
    protected override void OnMouseEnter(EventArgs e)
    {
        base.OnMouseEnter(e);
        OverrideCursor = Cursors.Cross;
    }

    protected override void OnMouseLeave(EventArgs e)
    {
        base.OnMouseLeave(e);
        OverrideCursor = null;
    }

    protected override void OnMouseMove(MouseEventArgs e)
    {
        base.OnMouseMove(e);
        OverrideCursor = Cursors.Cross;
    }
}
并使用它代替表单上的链接标签。(这会出于测试目的将光标设置为十字,但您可以将其更改为任何您想要的。)


我应该说,真正的LinkLabel代码有更复杂的逻辑,可以根据链接是否启用来更改光标,但您可能并不关心这一点

在Visual Studio中链接标签的属性窗格中将
光标
属性设置为
箭头

更新 我更喜欢哈米多·桑的答案。当
LinkLabel
设置为
AutoSize=false
并使用
LinkArea
时,他的解决方案可以正常工作

旧的解决方案:

public class LnkLabel : LinkLabel
{
    const int WM_SETCURSOR =    32,
              IDC_HAND     = 32649;

    [DllImport("user32.dll")]
    public static extern int LoadCursor(int hInstance, int lpCursorName);

    [DllImport("user32.dll")]
    public static extern int SetCursor(int hCursor);

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_SETCURSOR)
        {
            int cursor = LoadCursor(0, IDC_HAND);

            SetCursor(cursor);

            m.Result = IntPtr.Zero; // Handled

            return;
        }

        base.WndProc(ref m);
    }
}

你不能在VS的
属性
窗格中设置
光标
属性吗?由于某些原因,该属性不起作用。我该如何以及在哪里进行设置?我是C#新手,我在谷歌上搜索过它,但似乎不明白我在哪里这么做。这不起作用,因为LinkLabel类有自己的设置和更改光标的逻辑