2009-02-09 9 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 

Update

А вот тот же самый ответ в 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? –

+1

@StealthRabbi Обновлен с помощью образца C# –

1

Опуститесь на Win32 и обработайте WM_SETCURSOR. Вы можете поместить свою собственную логику, чтобы изменить курсор, основанный на тестировании ударов для кнопки. Check this article by Raymond Chen для лучшего понимания того, как устанавливается курсор.

Смежные вопросы