WinForms MouseWheel 事件在 F# 中如何工作?
How does the WinForms MouseWheel event work in F#?
我想弄清楚 mouseWheel 事件在 winforms 库中是如何工作的。
尽管在 F#
方面从来没有任何好的例子可以学习
我希望你们中的一个能告诉我。
我在想这样的事情:
onMouseWheelEvent =
if MouseWheel event = scroll forward then
printfn "zooming in"
else
printfn "zooming out"
我知道我发布的是一些愚蠢的代码,但我确实无法在 winforms mousewheelevent 上找到任何东西,除了它存在。它是如何工作的仍然是个谜。
提前致谢。
如果您使用的是 F# 交互式,您可以编写的最简单的代码来测试 MouseWheel
事件的行为方式如下所示:
open System.Windows.Forms
let frm = new Form(Visible=true)
frm.MouseWheel.Add(fun e ->
printfn "%A" e.Delta
)
当您 select 代码并将其发送到 F# Interactive 时(Alt+Enter 在大多数 F# 编辑器中),你应该看到一个表格出现。然后滚动时,您会看到 Delta
是负数或正数,表示您向上或向下滚动了多少。
如果你想 运行 作为一个独立的应用程序,你需要在别处显示数字(我猜是使用标签)并且你需要将 Application.Run(frm)
添加到应用程序启动结束。
我同意 Anton 的观点,即 WinForms 现在可能不是大多数人用来开发用户界面应用程序的工具,但我认为这不是问题 - 您可以使用 WinForms 构建完美的应用程序并学习 F#。 F# book I wrote some time ago 有一堆 WinForms 示例。
在 f# interactive 中尝试 运行 这个(由 fssnip from Tomas Petricek 上的类似示例提供):
open System.Windows.Forms
// Create form, label and add label to form
let form = new Form(Text = "Scroller Test")
let label = new Label()
form.Controls.Add(label)
// register mousewheel event handler and capture scrolling
form.MouseWheel.Add(fun e ->
match e.Delta with
| n when n > 0 -> label.Text <- "Scrolled up"
| n when n < 0 -> label.Text <- "Scrolled down"
| _ -> ()) // making compiler happy even though e.Delta cannot be 0
// Show the form (in F# Interactive)
form.Show()
我想弄清楚 mouseWheel 事件在 winforms 库中是如何工作的。
尽管在 F#
我希望你们中的一个能告诉我。
我在想这样的事情:
onMouseWheelEvent =
if MouseWheel event = scroll forward then
printfn "zooming in"
else
printfn "zooming out"
我知道我发布的是一些愚蠢的代码,但我确实无法在 winforms mousewheelevent 上找到任何东西,除了它存在。它是如何工作的仍然是个谜。
提前致谢。
如果您使用的是 F# 交互式,您可以编写的最简单的代码来测试 MouseWheel
事件的行为方式如下所示:
open System.Windows.Forms
let frm = new Form(Visible=true)
frm.MouseWheel.Add(fun e ->
printfn "%A" e.Delta
)
当您 select 代码并将其发送到 F# Interactive 时(Alt+Enter 在大多数 F# 编辑器中),你应该看到一个表格出现。然后滚动时,您会看到 Delta
是负数或正数,表示您向上或向下滚动了多少。
如果你想 运行 作为一个独立的应用程序,你需要在别处显示数字(我猜是使用标签)并且你需要将 Application.Run(frm)
添加到应用程序启动结束。
我同意 Anton 的观点,即 WinForms 现在可能不是大多数人用来开发用户界面应用程序的工具,但我认为这不是问题 - 您可以使用 WinForms 构建完美的应用程序并学习 F#。 F# book I wrote some time ago 有一堆 WinForms 示例。
在 f# interactive 中尝试 运行 这个(由 fssnip from Tomas Petricek 上的类似示例提供):
open System.Windows.Forms
// Create form, label and add label to form
let form = new Form(Text = "Scroller Test")
let label = new Label()
form.Controls.Add(label)
// register mousewheel event handler and capture scrolling
form.MouseWheel.Add(fun e ->
match e.Delta with
| n when n > 0 -> label.Text <- "Scrolled up"
| n when n < 0 -> label.Text <- "Scrolled down"
| _ -> ()) // making compiler happy even though e.Delta cannot be 0
// Show the form (in F# Interactive)
form.Show()