2009-02-09 60 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以更好地瞭解光標如何設置。