「Xamarin.MacのNSViewでMouseMovedイベントなどを発生させる」の版間の差分

編集の要約なし
imported>Administrator
編集の要約なし
24行目: 24行目:
</source>
</source>


これらのイベントを発動するにはNSViewのAddTrackingAreaメソッドで事前に「どの範囲で取るか」という指定をする必要がある。
これらのイベントが発動するようにするにはNSViewのUpdateTrackingAreasメソッドをオーバーライドして、AddTrackingAreaメソッドで事前に「どの範囲で取るか」を明示的に指定をする。
<source lang="csharp">
<source lang="csharp">
         void Initialize()
         NSTrackingArea _trackingArea;
 
        public override void UpdateTrackingAreas()
         {
         {
             var trackingArea = new NSTrackingArea(
             if (_trackingArea != null)
                rect: this.Bounds,
            {
                options: NSTrackingAreaOptions.ActiveAlways |
                this.RemoveTrackingArea(_trackingArea);
                          NSTrackingAreaOptions.InVisibleRect |
            }
                          NSTrackingAreaOptions.MouseEnteredAndExited |
 
                          NSTrackingAreaOptions.MouseMoved,
            _trackingArea = new NSTrackingArea(
                owner: this,
                rect: this.Bounds,
                userInfo: null);
                options: NSTrackingAreaOptions.ActiveWhenFirstResponder | NSTrackingAreaOptions.MouseMoved,
           
                owner: this,
             this.AddTrackingArea(trackingArea);
                userInfo: null);
 
             this.AddTrackingArea(_trackingArea);
 
            base.UpdateTrackingAreas();
         }
         }
</source>
</source>