【问题标题】:mono - winforms not working properly with f#mono - winforms 无法与 f# 一起正常工作
【发布时间】:2015-10-15 10:41:06
【问题描述】:

我已经成功安装了带有 F# 绑定的 MonoDevelop(在 Linux Arch 下)。

如果我尝试一个简单的带有 winforms 的 HelloWorld,我会得到这个奇怪的行为:程序编译和构建成功,但是在加载窗口之后它只是自行关闭并且程序返回并且没有错误消息。

我检查了日志,似乎没有抛出任何错误(此处讨论的错误除外:GLib-CRITICAL **: Source ID XXX was not found when attempting to remove it,无论如何这似乎无关)。

程序代码:

open System.Drawing
open System.Windows.Forms

[<EntryPoint>]
let main argv = 
    let form = new Form(TopMost = true, Text = "Hello World")
    form.Show()
    0 // return an integer exit code

如果我尝试通过交互式控制台运行它,窗口就会被冻结:我可以移动它,但我无法关闭它(必须关闭 monodevelop 才能这样做)。

我也尝试通过终端编译它,使用:

fsharpc Program.fs -pkg:dotnet.dll
mono Program.exe

但它的行为方式与我在 MonoDevelop 中运行的方式相同(窗口打开然后关闭)。 除了 F# 似乎工作正常之外,我可以毫无问题地运行控制台程序。

我还尝试在 MonoDevelop 中使用 C# 运行一个简单的 HelloWorld 程序,它运行良好。

有什么建议吗?

【问题讨论】:

    标签: winforms f# mono monodevelop


    【解决方案1】:

    你需要用类似的东西来启动表单事件循环

    Application.Run(new Form())
    

    【讨论】:

    • 刚才试过了,效果很好:) 谢谢!我读到不建议使用 Application.Run() 来支持 form.Show(),但这似乎绝对不是这种情况。哦,好吧。
    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2020-08-19
    • 2013-02-06
    • 2019-02-02
    • 2021-10-15
    相关资源
    最近更新 更多