* 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
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS