我正在尝试在 F# 中制作一个非常简单的应用程序。我只想用点击事件制作一个小按钮,它将调用该MessageBox.Show()
方法。
open System
open System.Windows.Forms
module FSI =
[<System.Runtime.InteropServices.DllImport("user32.dll")>]
extern bool ShowWindow(nativeint hWnd, int flags)
let HideConsole() =
let proc = System.Diagnostics.Process.GetCurrentProcess()
ShowWindow(proc.MainWindowHandle, 0)
FSI.HideConsole()
let form1 = new Form()
form1.Text <- "App"
let Test() = ( MessageBox.Show("Clicked.") )
let button1 = new Button( Text = "Click Me" )
button1.Click.AddHandler(fun _ _ -> Test())
form1.Controls.Add(button1)
[<STAThread>]
do
Application.Run(form1)
发生以下错误:
- FSI.HideConsole() // 警告
- button1.Click.AddHandler(fun _ _ -> Test()) // 编译错误
它们是相似的。
对于第一个:
- 警告这个表达式应该有“unit”类型,但有“bool”类型。使用 'ignore' 丢弃表达式的结果,或使用 'let' 将结果绑定到名称。
对于第 2 次:
- 此表达式应具有单元类型,但此处具有 DialogResult 类型