.net - 非常简单的 F# 表单锁定键盘输入

标签 .net f#

使用下面的超简单代码,只要我在表单处于焦点时按下键盘上的一个键,表单就会完全锁定。我在 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/

相关文章:

asynchronous - 为什么在异步计算表达式中使用 "use"绑定(bind)时资源的处理会延迟?

types - F# 从列表创建类型

android - Mono for Android - 如何加速调试?

c# - 即使在 C# 中繁忙时也强制控制台应用程序进行打印

.NET 项目架构

f# - AutoOpen 外部定义模块

F# 如何编写一个接受 int 列表或字符串列表的函数

.net - 使用 .NET 实现全文搜索的理想功能语言

c# - C#输出换行的简洁方式

.net - 如何通过 .NET Compact Framework 上的代码最小化表单