Как изменить курсор для ToolStripButton? - PullRequest
3 голосов
/ 09 февраля 2009

Я хочу изменить курсор пользователя, когда он наводит курсор на определенный ToolStripButton, но не для других элементов ToolStrip. Как установить курсор на кнопку?

Ответы [ 4 ]

7 голосов
/ 09 февраля 2009

Поскольку 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;
}
1 голос
/ 09 февраля 2009

Перейдите к Win32 и обработайте WM_SETCURSOR. Вы можете добавить собственную настраиваемую логику для изменения курсора на основе проверки нажатия кнопки. Посмотрите эту статью Раймонда Чена , чтобы лучше понять, как устанавливается курсор.

0 голосов
/ 30 ноября 2018

Это лучший подход:

    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 - кнопка панели инструментов. Это прекрасно сработало для меня

0 голосов
/ 09 февраля 2009

Вы должны установить свойство Toolstrip.Cursor, чтобы изменить курсор. Да, вы правы, он изменит курсор мыши для всех кнопок панели инструментов.

Чтобы обойти это, создайте событие OnMouseEnter для каждой кнопки на панели инструментов, а затем установите курсор для всей панели инструментов на курсор, который вы хотите для этой конкретной кнопки.

...