3

当用户将鼠标悬停在特定的 ToolStripButton 上时,我想更改用户的光标,而不是 ToolStrip 上的其他项目。如何设置按钮的光标?

4

4 回答 4

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;
}
于 2009-02-09T15:13:12.843 回答
1

下拉到 Win32 并处理 WM_SETCURSOR。您可以输入自己的自定义逻辑,以根据按钮的命中测试更改光标。查看 Raymond Chen的这篇文章,以更好地了解光标的设置方式。

于 2009-02-09T15:15:23.213 回答
0

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

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

于 2009-02-09T15:12:31.037 回答
0

这是最好的方法:

    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 是工具条按钮。它对我很有用

于 2018-11-30T01:09:30.623 回答