簡體   English   中英

如何更改ToolStripButton的光標?

[英]How do I change the cursor for a ToolStripButton?

當用戶將鼠標懸停在特定的ToolStripButton上時,我想更改其光標,但不在ToolStrip上的其他項目上更改。 如何設置按鈕的光標?

因為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;
}

下拉至Win32並處理WM_SETCURSOR。 您可以輸入自己的自定義邏輯,以根據按鈕的點擊測試來更改光標。 請查看Raymond Chen的這篇文章 ,以更好地了解如何設置游標。

您必須設置Toolstrip.Cursor屬性才能更改光標。 是的,您是對的,它將更改所有工具欄按鈕的鼠標光標。

為了解決此問題,請為工具欄上的每個按鈕創建一個OnMouseEnter事件,然后將整個工具欄的光標設置為該特定按鈕所需的光標。

這是最好的方法:

    Private Sub tsbtnGuardar_MouseEnter(sender As Object, e As EventArgs) Handles tsbtnGuardar.MouseEnter
      On Error Resume Next
      ts.Cursor = Cursors.Hand
    End Sub

Private Sub tsbtnGuardar_MouseLeave(sender As Object, e As EventArgs) Handles tsbtnGuardar.MouseLeave
    On Error Resume Next
    ts.Cursor = Cursors.Arrow
End Sub

其中“ ts”是工具欄欄,而tsbtnGuardar是工具欄按鈕。 對我來說很棒

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM