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

編集の要約なし
imported>Administrator
 
(同じ利用者による、間の2版が非表示)
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,
            {
                this.RemoveTrackingArea(_trackingArea);
            }
 
            _trackingArea = new NSTrackingArea(
                rect: this.Bounds,
                 options: NSTrackingAreaOptions.ActiveAlways |
                 options: NSTrackingAreaOptions.ActiveAlways |
                           NSTrackingAreaOptions.InVisibleRect |
                           NSTrackingAreaOptions.InVisibleRect |
                           NSTrackingAreaOptions.MouseEnteredAndExited |
                           NSTrackingAreaOptions.MouseEnteredAndExited |
                           NSTrackingAreaOptions.MouseMoved,
                           NSTrackingAreaOptions.MouseMoved,
                owner: this,
                owner: this,
                userInfo: null);
                userInfo: null);
           
 
             this.AddTrackingArea(trackingArea);
             this.AddTrackingArea(_trackingArea);
 
            base.UpdateTrackingAreas();
         }
         }
</source>
</source>