我正在使用xamarin.mac制作可可应用程序。我在视图控制器上有盒子, 我希望每当鼠标移到该框上时,它都会像nsbutton一样移到手中。
答案 0 :(得分:1)
创建NSView
的子类,并定义您在MouseEntered
/ MouseExited
覆盖中要发生的事情。在这种情况下,从游标堆栈中推入并弹出NSCursor.ClosedHandCursor
。
public partial class MyCustomImageView : NSImageView
{
[Export("initWithCoder:")]
public MyCustomImageView(NSCoder coder) : base(coder) { }
public MyCustomImageView (IntPtr handle) : base (handle) { }
NSCursor cursor;
[Export("mouseEntered:")]
public override void MouseEntered(NSEvent theEvent)
{
cursor = NSCursor.ClosedHandCursor;
cursor.Push();
base.MouseEntered(theEvent);
}
[Export("mouseExisted:")]
public override void MouseExited(NSEvent theEvent)
{
base.MouseExited(theEvent);
cursor?.Pop();
}
}
现在,您可以定义NSTrackingArea
来激活鼠标进入和退出的处理程序。假设MyImageView
是您的NSView子类的实例/出口,然后将该跟踪区域添加到视图(AddTrackingArea()
)。
var ta = new NSTrackingArea(MyImageView.Bounds, NSTrackingAreaOptions.ActiveAlways | NSTrackingAreaOptions.MouseEnteredAndExited, MyImageView, null);
MyImageView.AddTrackingArea(ta);