gpt4 book ai didi

c# - 在 MonoMac 中打开 Cocoa 窗口

转载 作者:行者123 更新时间:2023-12-03 17:13:18 26 4
gpt4 key购买 nike

我正在尝试完成打开新窗口这一非常简单的任务,但我似乎完全无法做到这一点。

我在 Mac 上使用 MonoMac 和 monobjc。创建新的 monobjc 项目时,会创建 MainMenu.xib。我已成功使用 XCode 编辑器添加控件并绑定(bind)到该文件。该窗口会在应用程序启动时自动打开。

但是,当我尝试创建新窗口时,我根本无法使其显示。我通过右键单击 MainMenu.xib 的父文件夹,然后单击添加文件 => Cocoa Window Template 创建了一个 .xib 文件。该文件可以在 XCode 中编辑为 MainMenu.xib。

然后,我继续创建一个继承 NSWindowController 的类,并选择该类作为 .xib 文件中窗口的“文件所有者”。然后我就能够设计窗口,并向 Controller 添加 socket 和操作。

但我不知道如何打开窗口。我尝试过多种变体:

var f = new RegularLoginForm(); //which inherits NSWindowController
f.LoadWindow(); //I have tried without this line
f.ShowWindow(null); // I have also tried sending in the AppDelegate object (which is the controller for MainMenu.xib)

但似乎没有任何效果——也就是说,窗口永远不会打开。有什么建议吗?

编辑:这是我的 .xib 及其配置的屏幕截图:https://dl.dropbox.com/u/1545094/so_nswindowcontroller.png

最佳答案

您在 Window.xib 中将 RegularLoginForm 设置为文件所有者;但是您是否也将文件所有者的窗口导出连接到 Interface Builder 中的窗口?

即右键单击 IB 中的 File's Owner,然后单击并将 Window 导出拖至 Window 对象

此外,我尝试了你的代码,对我来说它在调用时崩溃了

f.ShowWindow(null)

[错误] 致命的未处理异常:System.ArgumentNullException:参数不能为空。参数名称:sender

如果我分配发件人参数,例如,它运行正常

f.ShowWindow(this)

但是,我的环境只有MonoMac;没有 monoobjc (我不确定你如何或为什么一起使用两者?);所以YMMV。

关于c# - 在 MonoMac 中打开 Cocoa 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14753166/

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