使用下面的超简单代码,只要在表单处于焦点时按下键盘上的键,表单就会完全锁定.我在F#interactive里面运行它.关闭表单的唯一方法是单击F#interactive中的"重置会话".我已经尝试将事件处理程序添加到KeyPress,结果相同.我添加鼠标事件处理程序,菜单,组合框等没有问题.
我必须做错事,因为在键盘上按键可能不应该是F#此时的错误.有任何想法吗?
// Add reference to System.Windows.Forms to project
open System.Windows.Forms
let a = new Form()
a.Visible <- true
Run Code Online (Sandbox Code Playgroud)
我在Windows XP上使用F#2.0 for Windows + Visual Studio 2008(2010年4月发行版).
谢谢!
我想你需要打电话给
Application.Run(a)
Run Code Online (Sandbox Code Playgroud)
但我现在没有时间尝试和验证。
编辑:
一件有用的事情是:创建一个 C# Windows 窗体项目,然后查看它从什么代码开始。它给你这个:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
Run Code Online (Sandbox Code Playgroud)
所以当然你可以在 F# 中做同样的事情:
open System.Windows.Forms
let Main() =
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(false)
Application.Run(new Form())
[<System.STAThread>]
do
Main()
Run Code Online (Sandbox Code Playgroud)