いたって標準的なメッセージボックスですよね。
これがMacで、アプリがActiveな状態じゃないと表示されない。
処理は走っているんだけど、見た目に反映されない。
開発してるアプリがFinderからのドロップを受け付けているのですが、サクサクとドロップすると、アプリがActiveになる前にドロップ処理が走ってしまい、メッセージが表示されない。
他にも、とても長い処理の間、他の作業をしてしまうと、完了メッセージが表示されない。
これが、メッセージボックスを表示する前にActive化すれば良いか、と下記2行足しても改善しない。
なんでや。
NSApplication.SharedApplication.ActivateIgnoringOtherApps(true);
this.View.Window?.MakeKeyAndOrderFront(this);
ただ、Xamarin.Mac.AppKit.NSAlertならちゃんと出るので、こっちを使えばOKっぽい。
/// <summary>
/// OKボタンのみのメッセージ表示
/// </summary>
/// <param name="msg">メッセージ本文</param>
/// <param name="style">メッセージ種別</param>
private void ShowOKOnlyMessageBox(string msg, NSAlertStyle style)
{
var alert = new NSAlert()
{
AlertStyle = style,
InformativeText = msg,
MessageText = "",
};
alert.AddButton(Consts.DialogButtonTextOK);
alert.RunModal();
}
他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。