スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

F#入門 Windowsアプリケーション編 ComboBox(2) オートコンプリート

今回はComboBoxの続きです。
ComboBox表示スタイルとして4種類が用意されているので、これを順番に見ていきます。
それではいつも通り部品をのっけるWindows Formを準備しておきます。
 
open System
open System.Windows.Forms
open System.Drawing
 
let mainForm = new Form(Width = 460, Height = 150, Text = "MyComboBox Window")
mainForm.Show() |> ignore
 
ComboBoxのインスタンスを一個作成して項目を追加したのち、フォームに乗っけます。
 
let myComboBox01 = new ComboBox(Location = new Point(10,10))
List.iter (fun t -> myComboBox01.Items.Add(t) |> ignore) [1;3;5;7;9;11;13;15]
mainForm.Controls.Add(myComboBox01) 
 
819-1.jpg 
 
これがデフォルトのDropDownスタイルでDropDownStyleプロパティがDropDownとなっており、入力も選択もできるスタイルです。
 
次にスタイルを変更してみます。
 
myComboBox01.DropDownStyle <- ComboBoxStyle.DropDownList 
 
819-2.jpg  
 
このDropDownListスタイルでは、テキストが入力できなくなり、選択のみ可能となります。
 
さらに別のスタイルに変更してみます。
 
myComboBox01.DropDownStyle <- ComboBoxStyle.Simple 
 
819-3.jpg  
このSimpleスタイルでは、入力も選択も可能です。(選択部分が常に表示されている形となっています。)
 
 
次にオートコンプリート機能の話題に移りたいと思います。ComboBox,TextBoxともにこの機能が使えますが、ここではTextBoxについての例を紹介します。
 
ではmainFormを準備して、TextBoxを一つ乗っけておきます。
 
open System
open System.Windows.Forms
open System.Drawing
 
let mainForm = new Form(ClientSize = new Size(500,300), Text = "MyAutoComplete Window")
mainForm.Show() |> ignore
 
let myTextBox = new TextBox(Size = new Size(200,30),Location = new Point(10,10))
mainForm.Controls.Add(myTextBox)
 
TextBoxコントロールでオートコンプリート機能を使用可能にするには、AutoCompleteModeプロパティとAutoCompleteSourceプロパティの2つを設定します。
 
AutoCompleteSourceプロパティでは、オートコンプリートでよく使われるURLの履歴や、ファイルシステムなのが準備されています。また独自の補完候補を使用することもできます。
とりあえずURLの履歴を設定しておきます。
 
> myTextBox.AutoCompleteSource <- AutoCompleteSource.AllUrl;;
val it : unit = ()
 
なおAutoCompleteSource列挙対の候補の一覧は、http://msdn.microsoft.com/ja-jp/library/system.windows.forms.autocompletesource.aspx を参照してください。
 
次はAutoCompleteModeの設定です。
 
> myTextBox.AutoCompleteMode;;
val it : AutoCompleteMode = None
 
からわかるようにデフォルトではNoneになっています。
 
ここには、AutoCompleteMode列挙体の値を設定します。次のような値があります。
 
○Append     既存の文字に、その後に続く可能性が最も高い候補文字列を追加し、追加した文字を強調表示します。  
 
○None     ComboBox コントロールおよび TextBox コントロールのオート コンプリート機能を無効にします。  
○Suggest エディット コントロールに関連付けられた補助のドロップダウン リストを表示します。このドロップダウン リストには、1 つ以上の補完文字列の候補が格納されています。  
 
○SuggestAppend Suggest オプションと Append オプションの両方を適用します。  
 
ではまずは、AutoCompleteMode.Appendに設定してみます。
 
> myTextBox.AutoCompleteMode <- AutoCompleteMode.Append;;
val it : unit = ()
 
テキストボックスにhttp:://bと入力して、矢印キーを押すと次の状態になります。 
 
819-4.jpg  
次にAutoCompleteMode.Suggestに変更してみます。
 
> myTextBox.AutoCompleteMode <- AutoCompleteMode.Suggest;;
val it : unit = ()
 
テキストボックスにhttp::/と入力すると次の状態になります。 
 
 819-5.jpg 
 
次にAutoCompleteMode.SuggestAppendに変更してみます。
 
> myTextBox.AutoCompleteMode <- AutoCompleteMode.SuggestAppend;;
val it : unit = ()
 
テキストボックスにhttp:://dと入力すると次の状態になります。 
 
819-6.jpg 
 
最後に独自の候補リストを使用する例を紹介します。
この場合テキストボックスのAutoCompleteSourceプロパティにAutoCompleteSource.CustomSourceを指定します。また、テキストボックスのAutoCompleteCustomSourceプロパティに、候補文字列を蓄積するAutoCompleteStringCollectionクラスのインスタンスを指定します。
下の例ではボタンを押すたびに、テキストボックスの文字列を候補に追加していきます。
 
<ソース>
open System
open System.Windows.Forms
open System.Drawing
 
let mainForm = new Form(ClientSize = new Size(500,150), Text = "MyAutoComplete Window")
mainForm.Show() |> ignore
 
let myTextBox = new TextBox(Size = new Size(400,20),Location = new Point(10,10))
let myButton = new Button(Size = new Size(50,20),Location = new Point(420,10),Text= "submit")
mainForm.Controls.Add(myTextBox)
mainForm.Controls.Add(myButton)
 
let myACSC = new AutoCompleteStringCollection()//候補の文字列をためるところ
myTextBox.AutoCompleteSource <- AutoCompleteSource.CustomSource
myTextBox.AutoCompleteMode <- AutoCompleteMode.SuggestAppend
myTextBox.AutoCompleteCustomSource <- myACSC
 
myButton.Click.Add(fun _ -> let candidateStr = myTextBox.Text.Trim()
                            if candidateStr.Length > 0 && myACSC.Contains(candidateStr) = false then
                                 myACSC.Add( candidateStr) |> ignore
                                 myTextBox.Text <- "")
 
実行例 
 
819-7.jpg  
 
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

T GYOUTEN

Author:T GYOUTEN
F#と英単語とフリーソフトと読書に興味があります。
ホームページでフリーソフトも公開しています。どぞ御贔屓に。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
フリーエリア
フリーエリア
blogram投票ボタン
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。