* Visual Studio のフォームデザイナを使って, F#でGUIアプリケーションを作る (keigoi) [#x9400120] + ソリューションを作る.F#プロジェクトを選択. + ソリューションを右クリックし、追加-> 新しいプロジェクト で C#のクラスライブラリを追加. + クラスライブラリにフォームを追加し、フォームデザイナでUIを配置する。 + Form名.Designer.cs のクラスのフィールドにUIがprivate宣言されているので、F#側から操作したいものを public にする。 + F#側のコードを書く. ** サンプル (zip) [#qa4216c6] - &ref(fsharpguitest.zip); ** F#側 [#f5e792ae] 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() ** C#側 [#fa430d2c] *** Form1.cs [#o76ab99a] - フォームデザイナによって自動生成される. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lib_FormPart { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } } *** Form1.Designer.cs (抜粋) [#h3e2663a] - フォームデザイナによって自動生成される. 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で動かす [#pf2fd987] + Mono と F# をインストールする. -- Mono は Macports からビルドするのではなく配布されているバイナリを使ったほうがよさそう -- F# も同様. MacPorts の F# は少し古いことがある. http://msdn.microsoft.com/en-us/fsharp/cc835251.aspx -- F# も同様. MacPorts の F# は少し古いことがある. ここからダウンロード http://msdn.microsoft.com/en-us/fsharp/cc835251.aspx + .exe (F#のコンパイルで得られたバイナリ), .dll (C#のコンパイルで得られたバイナリ) を同じディレクトリに置く + 環境変数 MONO_PATH を FSharp-x.x.x/bin に設定する + 起動する. mono ~~.exe