加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何使对象成为窗口的委托?

发布时间:2020-12-15 21:24:26 所属栏目:百科 来源:网络整理
导读:我试图用 Xcode 4弄清楚MonoMac,大多数事情似乎都有效.但是,我无法弄清楚如何获得windowWillClose:工作. 我补充道 [Export ("windowWillClose:")] void windowWillClose(NSNotification notification) { Environment.Exit(0); } 到MainWindow.cs并使MainWin
我试图用 Xcode 4弄清楚MonoMac,大多数事情似乎都有效.但是,我无法弄清楚如何获得windowWillClose:工作.

我补充道

[Export ("windowWillClose:")]
    void windowWillClose(NSNotification notification)
    {
        Environment.Exit(0);    
    }

到MainWindow.cs并使MainWindow成为窗口的委托. (我尝试将MainWindowController作为委托,但这根本不起作用.)

但是,当我关闭窗口时,不会调用委托方法.

我在俯瞰什么?

解决方法

随图: http://www.netneurotic.net/Mono/MonoMac-windowWillClose.html

这里的技巧是创建一个方法,调用Environment.Exit()来退出应用程序,就像任何其他.NET应用程序一样.

另一个技巧是注意到当Cocoa对象存活时Environment.Exit()不起作用.但NSApplication.SharedApplication.Terminate(this)有效.我不知道如何以这种方式返回错误代码.

Cocoa和MonoMac使用“委托”允许一个对象在另一个对象发生某些事件时作出反应.当主窗口关闭时,我们将使用此概念调用Terminate().

Cocoa对象具有“outlet”,它们似乎是指向其他对象的指针.我不知道这在技术上是否是正确的描述.没关系.其中一个出口是“委托”,我们将设置为包含窗口关闭时我们想要调用的方法的对象.因此,我们必须将主窗口的委托出口设置为我们的对象.

我们将使用MainWindow.cs中定义的MainWindow类作为主窗口的委托.我想这意味着我们使用一个对象作为自己的委托或类似的东西.它仍然有效.

要使MainWindow成为主窗口的委托并对主窗口关闭做出反应,请按照以下步骤操作.

>双击MainWindow.xib以打开Xcode.
>在Xcode中,找到主窗口.这是一个看起来像窗户的大事.

图1:标题为“窗口”的大事是主窗口.

>右键单击窗口的标题栏以显示窗口的出口.

您将看到一个名为“委托”的商店.

图2:其中一个“奥特莱斯”是“代表”.

>找到“对象库”及其中的蓝色框.蓝色框是一个对象.

图3:蓝框是一个对象.

>使用窗口左侧的图标将蓝色框拖动到灰色的东西.

图4:蓝色框属于窗口图标.

>将蓝色框设为“MainWindow”对象.单击蓝色框并将其类更改为“MainWindow”.

图5:更新蓝色框的类名.

>按控制键并从窗口标题栏拖动到蓝色框中.然后在出现的菜单中选择“委托”选项.

图6:控制拖动时出现的菜单.

我们的MainWindow对象现在是主窗口的委托.这意味着它可以对发生在窗口的事情作出反应.

>将以下代码添加到MainWindow.cs:

[导出( “windowWillClose:”)]
public void WindowWillClose(NSNotification notification)
{
????Console.WriteLine( “windowWillClose:”);
????NSApplication.SharedApplication.Terminate(本);
}

[Export(“windowWillClose:”)]语句告诉编译器(可能是编译器,但也许是其他一些实用程序在技术上被告知)以下方法声明是宣布的Objective-C方法的C#等价物.该方法可以具有不同的实际名称,但应该以足够相似的名称命名,以便我们可以轻松地识别它.我通常只是将第一个字母更改为大写版本以符合C#样式.

>编译应用程序,修复所有拼写错误,然后运行它.尝试关闭窗口.该应用程序将退出.

如果没有,重复所述的所有步骤,直到它为止.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读