我想在用户光标悬停在特定的ToolStripButton上时更改用户的光标,但不能更改ToolStrip上的其他项目。如何设置按钮的光标?
答案 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是工具栏按钮。对我来说很棒