「Xamarin.Mac/NSViewControllerからNSWindowを取得する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「NSViewControllerの直下プロパティにNSWindowを取れそうなものがない。 ググった結果、Viewプロパティ経由で取得できるようだ。 た...」)
 
 
26行目: 26行目:
 
             var window = this.View.Window;
 
             var window = this.View.Window;
  
             // ウインドウを左上に移動
+
             // ウインドウを左下に移動(Cocoaの座標系は左下が原点)
 
             var frame = new CGRect(0, 0, window.Frame.Width, window.Frame.Height);
 
             var frame = new CGRect(0, 0, window.Frame.Width, window.Frame.Height);
 
             this.View.Window.SetFrame(frame, display: true);
 
             this.View.Window.SetFrame(frame, display: true);

2017年6月19日 (月) 02:43時点における最新版

NSViewControllerの直下プロパティにNSWindowを取れそうなものがない。 ググった結果、Viewプロパティ経由で取得できるようだ。 たぶん誰もがNSViewController直下のどこかにプロパティがあるだろうと探し回ることであろう。

NSViewController.View.Window

試しにマウスクリックでウインドウを移動してみる。

using System;

using AppKit;
using Foundation;
using CoreGraphics;

namespace MouseEvents
{
    public partial class ViewController : NSViewController
    {
        // 〜〜〜 中略 〜〜〜

        public override void MouseDown(NSEvent theEvent)
        {
            base.MouseDown(theEvent);

            // NSWindowを取得する
            var window = this.View.Window;

            // ウインドウを左下に移動(Cocoaの座標系は左下が原点)
            var frame = new CGRect(0, 0, window.Frame.Width, window.Frame.Height);
            this.View.Window.SetFrame(frame, display: true);
        }
    }
}

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]