【发布时间】:2013-10-27 13:25:28
【问题描述】:
我有一个非常简单的程序来从网站获取 RSS 提要并用项目填充列表框。每当用户选择一个项目并按 Enter 键时,它应该转到一个网页。这是 KeyUp 事件处理程序!
rssList.KeyUp
|> Event.filter (fun e -> rssList.SelectedItems.Count > 0)
|> Event.filter (fun (args:Input.KeyEventArgs) -> args.Key = Key.Enter)
|> Event.add -> let feed = unbox<RSSFeed> rssList.SelectItem)
Process.Start(feed.Link) |> ignore)
我得到的是以下内容:
- 第一次触发事件时,它工作正常,浏览器打开并加载页面
- 第二次触发两次,所以现在我打开了两个浏览器窗口,页面都加载到了它们中。
- 我第三次得到三个浏览器。 . .你明白了!
有人知道为什么会这样吗?我的目标是(你猜对了)只是打开 1 个浏览器窗口和 1 个页面 PER 触发器
【问题讨论】:
-
看起来 Event.add 缺少一些代码(有趣的参数 ->)。你能解决它吗?
-
上面的代码运行良好,我没有收到任何“缺失”代码的错误。它按预期工作。但是这里有多次执行,我不知道为什么会发生这种情况
-
@ZaidAjaj 为了诊断起见,请尝试 Eugene 的建议——将您的
Event.add -> ...更改为Event.add (fun args -> ...)并尝试再次运行代码。编译器中总是可能存在错误,因此您没有得到解析器或输入错误。 -
@Jack 我已经尝试过了,这实际上是我的第一次尝试!然后我将事件更改为双击处理程序,然后使这两个事件由不同的处理程序处理。 . .我仍然得到相同的结果。