Visual Studio のフォームデザイナを使って, F#でGUIアプリケーションを作る (keigoi) †
- ソリューションを作る.F#プロジェクトを選択.
- ソリューションを右クリックし、追加-> 新しいプロジェクト で C#のクラスライブラリを追加.
- クラスライブラリにフォームを追加し、フォームデザイナでUIを配置する。
- Form名.Designer.cs のクラスのフィールドにUIがprivate宣言されているので、F#側から操作したいものを public にする。
- F#側のコードを書く.
module Main
open System.Windows.Forms
open Lib_FormPart
(* フォームの生成 *)
let form = new Form1()
(* button1 の Click イベントに メッセージボックスを表示する無名関数を追加 *)
let addHandlers () =
let f =
form.button1.Click.Add(fun _ -> ignore <| MessageBox.Show "Hello, F#!!")
()
let _ =
addHandlers()
form.ShowDialog()
Form1.Designer.cs (抜粋) †
- フォームデザイナによって自動生成される. button1 のみ public に変えておく
namespace Lib_FormPart
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
...
#endregion
public System.Windows.Forms.Button button1;
}
}
(参考) ビルドしたバイナリを Monoで動かす †
- Mono と F# をインストールする.
- .exe (F#のコンパイルで得られたバイナリ), .dll (C#のコンパイルで得られたバイナリ) を同じディレクトリに置く
- 環境変数 MONO_PATH を FSharp-x.x.x/bin に設定する
- 起動する. mono ~~.exe