如何更改ToolStripButton的光标?

时间:2009-02-09 15:00:20

标签: c# .net winforms toolstripbutton

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

4 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

下拉到Win32并处理WM_SETCURSOR。您可以根据按钮的命中测试输入自己的自定义逻辑来更改光标。 Check this article by Raymond Chen以便更好地理解Cursor的设置方式。

答案 2 :(得分:0)

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

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

答案 3 :(得分: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是工具栏按钮。对我来说很棒