- 追加された行はこの色です。
- 削除された行はこの色です。
* F# [#e3e23b98]
- Visual Studio のフォームデザイナを使って, F#でGUIアプリケーションを作る
* 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
+ .exe (F#のコンパイルで得られたバイナリ), .dll (C#のコンパイルで得られたバイナリ) を同じディレクトリに置く
+ 環境変数 MONO_PATH を FSharp-x.x.x/bin に設定する
+ 起動する. mono ~~.exe