使用下面的超简单代码,只要我在表单处于焦点时按下键盘上的一个键,表单就会完全锁定。我在 F# Interactive 中运行它。关闭表单的唯一方法是在 F# 交互中单击“重置 session ”。我试过向 KeyPress 添加事件处理程序,结果相同。我在添加鼠标事件处理程序、菜单、组合框等方面没有问题。
我一定是做错了什么,就像在键盘上按下一个键一样明显的事情在这一点上可能不应该是 F# 的错误。有任何想法吗?
// Add reference to System.Windows.Forms to project
open System.Windows.Forms
let a = new Form()
a.Visible <- true
我在 Windows XP 上使用 F# 2.0 for Windows + Visual Studio 2008(2010 年 4 月版)。
谢谢!
最佳答案
我想你需要调用
Application.Run(a)
但我现在没有时间尝试和验证。
编辑:
一件有用的事情是:创建一个 C# Windows 窗体项目,然后查看它以什么代码开始。它给你这个:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
所以当然你可以在 F# 中做同样的事情:
open System.Windows.Forms
let Main() =
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(false)
Application.Run(new Form())
[<System.STAThread>]
do
Main()
关于.net - 非常简单的 F# 表单锁定键盘输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3197865/