4.4.3 创建 Windows 应用程序
来源:互联网 发布:单片机串口线 编辑:程序博客网 时间:2024/06/01 19:34
4.4.3 创建 Windows 应用程序
我们早先开始创建了应用程序的图形用户界面较早前,所以,已经创建了用户界面的控件的代码。不过,仍要为控件指定用户交互逻辑。
用户可以使用两个按钮控制应用程序。第一个 (btnOpen) 加载 CSV 文件,第二个(btnSave)将图表保存到图像文件中。我们还有一个 PictureBox 控件 boxChart,这用来在其中显示图表的。清单 4.12 显示了如何把绘图代码连接到 UI 。
Listing 4.12 Adding user interaction (F#)
let openAndDrawChart(e) =
let dlg = new OpenFileDialog(Filter="CSV Files|*.csv")
if (dlg.ShowDialog() = DialogResult.OK) then
let pieChart = drawChart(dlg.FileName)
boxChart.Image <- pieChart
btnSave.Enabled <- true
let saveDrawing(e) =
let dlg = new SaveFileDialog(Filter="PNG Files|*.png")
if (dlg.ShowDialog() = DialogResult.OK) then
boxChart.Image.Save(dlg.FileName)
[]
do
btnOpen.Click.Add(openAndDrawChart)
btnSave.Click.Add(saveDrawing)
Application.Run(mainForm)
首先,该代码声明了两个函数,当用户单击分别打开和保存按钮时调用。为打开文件,用函数 openAndDrawChart,该函数首先创建 OpenFileDialog,这是 Windows Forms 类,显示标准的便选择文件对话框。如果用户选择一个文件,函数调用我们早先实现的函数 drawChart。此调用的结果是一个在内存中的位图,可以赋给 PictureBox 控件的 Image 属性。第二个函数更简单,因为它不需要绘制图表,它当前显示在 PictureBox 中的图像保存到指定的文件中,由用户使用 SaveFileDialog 指定。
我们已经讨论了执行一个标准的 Windows 应用程序的代码,但清单 4.12 中再次显示,因为我们已经添加两行代码。在运行应用程序之前,我们指定当用户单击 btnOpen 按钮时,openAndDrawChart 函数应调用,对第二个按钮也是同样。这是通过注册函数作为 Click 的事件处理程序,使用 Add 方法。不像在 C# 中,事件是特殊的语言构造,F# 把事件作为有 Add 方法r 普通的对象看待。F# 中的事件也有 AddHandler 和 RemoveHandler 方法,与C# 中的事件的 += 和 -=运算符有完全相同的目的。我们将在第 16 章更详细地讨论有关此主题,但在大多数情况下,可以使用 Add 方法。
- 4.4.3 创建 Windows 应用程序
- 4.4.3 创建 Windows 应用程序
- 4.4 创建 Windows Forms 应用程序
- 4.4 创建 Windows Forms 应用程序
- 创建 Windows 服务应用程序
- 创建 Windows 应用程序 (C++)
- 创建一个Windows Service应用程序
- 创建一个Windows Service应用程序
- windows 应用程序窗口的创建
- Service 创建windows服务应用程序
- 创建 C# Windows 窗体应用程序
- 创建Windows应用程序的方法
- 给windows应用程序创建快捷方式
- Windows应用程序创建DataMatrix条码
- Windows应用程序快捷方式创建工具
- Windows应用程序窗口的创建
- 使用 Microsoft.NET Frameworks 创建Windows应用程序
- 使用 Microsoft.NET Frameworks 创建Windows应用程序
- 图片自动展示代码【V1】
- 会议安排---贪心算法---快速排序(java)
- Linux下使用MySQL C API
- MySQL 参考手册 以及MySQL下载网址
- Doxygen 配置详解
- 4.4.3 创建 Windows 应用程序
- CSS “点 ”“井号”的含义and ID class区别
- spring 的一些 注解
- [Java] Mouse/Window/ActionListener 多个事件监听器
- jQuery Mobile 和 JSON
- 一个关于电话与socket的类比(转的)
- ajax 原理和应用
- 希腊字母
- ajax 文本框输入提示中文乱码问题解决方案