gpt4 book ai didi

c# - 使用 monomac/c# 实例化一个附加窗口

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:04 25 4
gpt4 key购买 nike

我一直在寻找这个问题的答案,虽然我意识到这可能非常微不足道,但不知何故答案却让我望而却步。

我需要显示第二个窗口(如果重要的话,通过单击菜单项启动)。我非常清楚如何使用 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 元素的窗口。

最佳答案

只需添加一个不带 handle 参数的默认构造函数。确保 MyWindowClass 是 NSWindow 的子类,它应该可以工作。

此外,您可能需要保留对 myWindow 的引用 - 这样它就不会被垃圾回收。

关于c# - 使用 monomac/c# 实例化一个附加窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14389263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com