私はこの質問に対する答えをずっと探していましたが、それがおそらく非常に些細なことであることに気づきましたが、どういうわけか答えがわかりません.
2 番目のウィンドウを表示する必要があります (問題がある場合は、メニュー項目をクリックして起動します)。winforms でこれを行う方法はよく知っていますが、monomac/NSWindow に相当するものが何であるかはわかりません。私はこれを行う必要があります:
MyWindowClass myWindow = new MyWindowClass();
myWindow.Show();
この件に関して私が見つけることができる最良の情報は、以下が機能するはずであると言います:
MyWindowClass myWindow = new MyWindowClass();
myWindow.MakeKeyAndOrderFront(this);
しかし、それを試してみると、MyWindowClass() にはオーバーロードが必要であることがわかります。そのため、コンストラクターを確認すると、IntPtr を要求していることがわかります。よくわからないので、これを試します:
MyWindowClass myWindow = new MyWindowClass(new IntPtr());
myWindow.MakeKeyAndOrderFront(this);
このコードはエラーなしで実行されますが、ウィンドウを起動しようとしても何も起こりません。
私はばかげた間違いを犯しているだけだと確信していますが、この件に関して何も見つけることができませんでした. どんな助けでも大歓迎です。
編集:参考までに、コンストラクターの関連部分を次に示します。
public MyWindowClass (IntPtr handle) : base (handle)
{
Initialize ();
}
追加情報: 次の方法で AppDelegate.cs 内から上記のコードを実行しようとしています。
partial void showWindow (MonoMac.Foundation.NSObject sender){
MyWindowClass myWindow = new MyWindowClass(new IntPtr());
myWindow.MakeKeyAndOrderFront(this);
}
さらに多くのコード アホイ:
public partial class ViewPaths : MonoMac.AppKit.NSWindow
{
#region Constructors
public ViewPaths ()
{
Initialize();
}
// Called when created from unmanaged code
public ViewPaths (IntPtr handle) : base (handle)
{
Initialize ();
}
// Called when created directly from a XIB file
[Export ("initWithCoder:")]
public ViewPaths (NSCoder coder) : base (coder)
{
Initialize ();
}
// Shared initialization code
void Initialize ()
{
}
#endregion
}
そして、実際のインスタンス化:
public partial class AppDelegate : NSApplicationDelegate
{
MainWindowController mainWindowController;
ViewPaths display;
public AppDelegate ()
{
}
public override void FinishedLaunching (NSObject notification)
{
mainWindowController = new MainWindowController ();
mainWindowController.Window.MakeKeyAndOrderFront (this);
}
partial void viewPaths (MonoMac.Foundation.NSObject sender){
display = new ViewPaths();
display.MakeKeyAndOrderFront(this);
}
}
}
これは、いかなる種類の UI 要素もないウィンドウを示しています。