非常简单的F#形式锁定键盘输入

Dav*_*ave 5 .net f#

使用下面的超简单代码,只要在表单处于焦点时按下键盘上的键,表单就会完全锁定.我在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月发行版).

谢谢!

Bri*_*ian 3

我想你需要打电话给

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)