「Xamarin.Macでモーダルウインドウを作成する」の版間の差分

imported>Administrator
編集の要約なし
imported>Administrator
編集の要約なし
 
(同じ利用者による、間の2版が非表示)
41行目: 41行目:
</source>
</source>


なお、NSApplication.SharedApplication.StopModalWithCodeメソッドはウインドウのモーダル化が解除されるだけでウインドウ自体は閉じない。ボタンなどを押されたときにモーダルウインドウを閉じる場合にはthis.Window.Closeを呼んでやると良いようだ。<source lang="csharp">
なお、NSApplication.SharedApplication.StopModalWithCodeメソッドはウインドウのモーダル化が解除されるだけでウインドウ自体は閉じない。ボタンなどを押されたときにモーダルウインドウを閉じる場合にはthis.Window.Closeを呼んでやると良いようだ。
        ModalResult _result = ModalResult.Cancel;


        public override void AwakeFromNib()
=== 表示してみる ===
        {
<syntaxhighlight lang="csharp">
            base.AwakeFromNib();
// ダイアログ生成
            // ----------------------------------------------------
var dialog = new SubWindowController();


            this.Window.WillClose += (object sender, EventArgs e) => {
// LoadWindowでawakeNibなどの初期化処理が呼ばれる
                Console.WriteLine("WillClose");
dialog.LoadWindow();
                NSApplication.SharedApplication.StopModalWithCode((int)_result);
            };


            // cancelButtonはInterfaceBuilderで貼付けたNSButton
// ウインドウを最前面にしておく(不要かもしれない)
            cancelButton.Activated += (object sender, EventArgs e) => {
dialog.Window.MakeKeyAndOrderFront(this);
                Console.WriteLine("cancelButton");
                _result = ModalResult.Cancel;
                this.Window.Close();
            };


            // cancelButtonはInterfaceBuilderで貼付けたNSButton
// モーダル表示実行
            okButton.Activated += (object sender, EventArgs e) => {
NSApplication.SharedApplication.RunModalForWindow(dialog.Window);
                Console.WriteLine("okButton");
 
                _result = ModalResult.OK;
</syntaxhighlight>
                this.Window.Close();
            };
        }
</source>


==関連項目==
==関連項目==