4.4.3 创建 Windows 应用程序

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 &lt;- true

let saveDrawing(e) =
  let dlg = new SaveFileDialog(Filter="PNG Files|*.png")
  if (dlg.ShowDialog() = DialogResult.OK) then
    boxChart.Image.Save(dlg.FileName)

[&lt;STAThread>]
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 方法。

你可能感兴趣的:(windows,F#,C#,应用程序,函数编程)