2009-02-09 65 views

回答

1

您必须设置Toolstrip.Cursor属性才能更改光标。是的,它会改变所有工具按钮的鼠标光标。

为了解决这个问题,为工具栏上的每个按钮创建一个OnMouseEnter事件,然后将整个工具条的光标设置为该特定按钮所需的光标。

7

由于ToolStripItem不从Control继承,因此它没有Cursor属性。

您可以为MouseEnter事件的形式光标,并恢复形式光标MouseLeave事件,VB范例如下:

Dim savedCursor As Windows.Forms.Cursor 

Private Sub ToolStripButton1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton1.MouseEnter 
    If savedCursor Is Nothing Then 
     savedCursor = Me.Cursor 
     Me.Cursor = Cursors.UpArrow 
    End If 
End Sub 

Private Sub ToolStripButton1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton1.MouseLeave 
    Me.Cursor = savedCursor 
    savedCursor = Nothing 
End Sub 

更新

这里是在相同的答案C#:

private Cursor savedCursor; 

private void ToolStripButton1_MouseEnter(object sender, EventArgs e) { 
    if (savedCursor == null) { 
     savedCursor = this.Cursor; 
     this.Cursor = Cursors.UpArrow; 
    } 
} 

private void ToolStripButton1_MouseLeave(object sender, EventArgs e) { 
    this.Cursor = savedCursor; 
    savedCursor = null; 
} 
+0

问题是关于C#。为什么这是在VB中? – 2016-05-10 12:44:35

1

下拉到Win32并处理WM_SETCURSOR。您可以放入自己的自定义逻辑,根据按钮的命中测试更改光标。 Check this article by Raymond Chen以更好地了解光标如何设置。