【发布时间】:2013-07-21 13:08:56
【问题描述】:
我正在尝试在 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' 将结果绑定到名称。
第二次:
- 此表达式应为 unit 类型,但此处为 DialogResult 类型
【问题讨论】:
标签: winforms events f# click messagebox