【发布时间】:2014-05-02 16:35:45
【问题描述】:
我刚开始在 Xamarin Studio 中使用 MonoMac,我遇到了最奇怪的问题:
我是一个窗口,上面有一个 NSButton 和一个 NSTextField。至此,我已经删除了按钮上的事件处理程序,所以它什么也不做,除了在我单击它时突出显示。按钮创建代码如下所示:
nsButton = new NSButton(new System.Drawing.RectangleF(0, 0, 100, 100));
nsButton.BezelStyle = NSBezelStyle.RoundRect;
nsButton.Font = NSFont.SystemFontOfSize(
NSFont.SystemFontSizeForControlSize(NSControlSize.Regular));
nsButton.StringValue = text;
...然后它像这样被添加到窗口中:
nsView.AddSubview(control.Handle as NSView);
(因为在这部分代码中,control.Handle 是作为对象类型的,nsView 是窗口上的主视图)。
起初一切都运行良好。但是,如果我反复单击该按钮,最终窗口就会关闭。没有错误,没有异常,应用程序本身不会退出;当我使用它们时,菜单会继续响应并愉快地记录消息。但是窗口只是——消失了。
它非常可重复:它发生在 21 次点击之后。如果我添加一个更新 NSTextField 的事件处理程序(例如 hello.Caption="Foo";),那么它会在 19 次点击后发生。我点击快或慢都没有关系;它总是相同的点击次数。注意项目中没有关闭窗口的代码,窗口甚至没有关闭框;我知道除了退出应用程序之外没有任何合法的方法可以关闭它。
我在这里感到困惑,不知道如何进一步调试。 Xamarin 是否有某种评估限制,在发生这么多事件后会关闭您的窗口?它是一个框架错误吗?任何见解将不胜感激。
【问题讨论】:
-
我终于设法(在 Xamarin 支持的帮助下)安装了 Xamarin.Mac,我很高兴地报告那里似乎没有出现此错误。所以,我想我可以将其归结为 MonoMac 中的一个奇怪错误,该错误似乎已在 Xamarin.Mac 中修复。
标签: c# events mono window monomac