「Xamarin.Macでモーダルウインドウを作成する」を編集中
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | [[MonoMac | + | [[MonoMac]]で[[モーダルウインドウ]]を表示する。 |
− | == | + | ==実装例1== |
− | + | [[モーダルウインドウ]]の[[戻り値]]用に[[WinForms]]のDialogResult風に[[列挙体]]を用意しておくと[[可読性]]が向上する気がする。 | |
− | + | <source lang="csharp"> | |
− | |||
− | |||
− | |||
− | |||
− | [[モーダルウインドウ]]の[[戻り値]]用に[[WinForms]]のDialogResult風に[[列挙体]]を用意しておくと[[可読性]]が向上する気がする。<source lang="csharp"> | ||
// モーダルウインドウの戻り値用 | // モーダルウインドウの戻り値用 | ||
public enum ModalResult | public enum ModalResult | ||
18行目: | 13行目: | ||
</source> | </source> | ||
− | + | MonoMacで[[モーダルウインドウ]]を表示するには NSApplication.SharedApplication.RunModalForWindowメソッドを使うようだ。 | |
− | + | 親ウインドウは勝手に認識されている? | |
+ | <source lang="csharp"> | ||
+ | public partial class MainWindowController : MonoMac.AppKit.NSWindowController | ||
+ | { | ||
+ | // 中略 | ||
− | + | public override void WindowDidLoad() | |
− | + | { | |
+ | base.WindowDidLoad(); | ||
− | + | showSubWindowButton.Activated += (object sender, EventArgs e) => { | |
+ | var sub = new SubWindowController(); | ||
+ | var ret = NSApplication.SharedApplication.RunModalForWindow(sub.Window); | ||
+ | if (ret == (int)ModalResult.OK) | ||
+ | { | ||
+ | Console.WriteLine("ok"); | ||
+ | } | ||
+ | }; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | 子ウインドウを閉じるにはNSApplication.SharedApplication.StopModalWithCodeメソッドを使うようだ。これを呼ばずに子ウインドウを閉じると親ウインドウに制御が戻らないので注意すること。 | ||
+ | |||
+ | この例では子ウインドウが普通に×ボタンで閉じる際に「ModalResult.OK」を返している。ダイアログ風にするのであればOKボタンやキャンセルボタンを用意して、それらが押した際にNSApplication.SharedApplication.StopModalWithCodeメソッド呼ぶとよいようだ。 | ||
+ | <source lang="csharp"> | ||
public partial class SubWindowController : MonoMac.AppKit.NSWindowController | public partial class SubWindowController : MonoMac.AppKit.NSWindowController | ||
{ | { | ||
40行目: | 55行目: | ||
} | } | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==関連項目== | ==関連項目== | ||
68行目: | 65行目: | ||
[[category:MonoMac]] | [[category:MonoMac]] | ||
− |