「Xamarin.MacでDockアイコンを非表示にする」の版間の差分

imported>Administrator
 
(他の1人の利用者による、間の2版が非表示)
13行目: 13行目:
info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。
info.plistでドックアイコンを非表示にする方法では常に非表示になってしまい使いにくい場面も多い。
[[ソースコード]]で動的に制御できると捗る。
[[ソースコード]]で動的に制御できると捗る。
この例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ。
 
NSApplicationインスタンスのActivationPolicyプロパティに、「Accessory」または「Prohibited」を設定するとドックアイコンが非表示になり、「Regular」を設定するとドックアイコンが表示になる。
<source lang="csharp">
<source lang="csharp">
     public partial class AppDelegate : NSApplicationDelegate
     public partial class AppDelegate : NSApplicationDelegate
21行目: 22行目:
         public override void DidFinishLaunching(NSNotification notification)
         public override void DidFinishLaunching(NSNotification notification)
         {
         {
            // NSApplicationのActivationPolicyプロパティに
            // AccessoryまたはProhibitedを設定するとドックアイコンが非表示になり、
            // Regularを設定するとドックアイコンが表示になる。
             var app = NSApplication.SharedApplication;
             var app = NSApplication.SharedApplication;
             app.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
             app.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
        }
    }
</source>
上記の例ではAppDelegateのDidFinishLaunchingメソッドでドックアイコンを消しているがこれに限らず、たとえばNSApplicationのインスタンスを生成しているMainメソッドでいきなり叩いても動くようだ(NSApplication.Initメソッド呼び出し後であればどこでも良いようだ)。
<source lang="csharp">
    static class MainClass
    {
        static void Main(string[] args)
        {
            NSApplication.Init();
            var application = NSApplication.SharedApplication;
            application.ActivationPolicy = NSApplicationActivationPolicy.Accessory;
            application.Delegate = new AppDelegate();
            application.Run();
         }
         }
     }
     }