スポンサーサイト

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

F#入門 Windowsアプリケーション編 テキストボックス(1)

今回はテキストボックスです。文字を表示したり、ユーザーの文字の入力欄として多用されます。
 
まずはフォームを生成しておきます。
 
open System
open System.Windows.Forms
open System.Drawing
 
let mainForm = new Form(Width = 300, Height = 300, Text = "Window For Button") //#1
mainForm.Show() |> ignore
 
これだけをF# Interactiveにおくると中身なしのフォームが表示されます。
テキストボックスを生成してフォームに加えます。
 
> let myTextBox0 = new TextBox(Location = new Point(30,50))
mainForm.Controls.Add(myTextBox0);;
 
val myTextBox0 : TextBox = System.Windows.Forms.TextBox, Text: 
 
これでフォームにテキストボックスが表示されました。
 
プロパティを調べてみます。
 
> myTextBox0;;
val it : TextBox =
  System.Windows.Forms.TextBox, Text: 
    {AcceptsReturn = false;
     AcceptsTab = false;
     AccessibilityObject = ControlAccessibleObject: Owner = System.Windows.Forms.TextBox, Text: ;
     AccessibleDefaultActionDescription = null;
     AccessibleDescription = null;
     AccessibleName = null;
     AccessibleRole = Default;
     AllowDrop = false;
     Anchor = Top, Left;
     AutoCompleteCustomSource = seq [];
     AutoCompleteMode = None;
     AutoCompleteSource = None;
     AutoScrollOffset = {X=0,Y=0};
     AutoSize = true;
     BackColor = Color [Window];
     BackgroundImage = null;
     BackgroundImageLayout = Tile;
     BindingContext = seq [];
     BorderStyle = Fixed3D;
     Bottom = 69;
     Bounds = {X=30,Y=50,Width=100,Height=19};
     CanFocus = true;
     CanSelect = true;
     CanUndo = false;
     Capture = false;
     CausesValidation = true;
     CharacterCasing = Normal;
     ClientRectangle = {X=0,Y=0,Width=96,Height=15};
     ClientSize = {Width=96, Height=15};
     CompanyName = "Microsoft Corporation";
     Container = null;
     ContainsFocus = false;
     ContextMenu = null;
     ContextMenuStrip = null;
     Controls = seq [];
     Created = true;
     Cursor = [Cursor: IBeam];
     DataBindings = seq [];
     DisplayRectangle = {X=0,Y=0,Width=96,Height=15};
     Disposing = false;
     Dock = None;
     Enabled = true;
     Focused = false;
     Font = [Font: Name=MS UI Gothic, Size=9, Units=3, GdiCharSet=128, GdiVerticalFont=False];
     ForeColor = Color [WindowText];
     Handle = 723980n;
     HasChildren = false;
     Height = 19;
     HideSelection = true;
     ImeMode = NoControl;
     InvokeRequired = false;
     IsAccessible = false;
     IsDisposed = false;
     IsHandleCreated = true;
     IsMirrored = false;
     LayoutEngine = System.Windows.Forms.Layout.DefaultLayout;
     Left = 30;
     Lines = [||];
     Location = {X=30,Y=50};
     Margin = {Left=3,Top=3,Right=3,Bottom=3};
     MaxLength = 32767;
     MaximumSize = {Width=0, Height=0};
     MinimumSize = {Width=0, Height=0};
     Modified = false;
     Multiline = false;
     Name = "";
     Padding = {Left=0,Top=0,Right=0,Bottom=0};
     Parent = System.Windows.Forms.Form, Text: MyFirst Window;
     PasswordChar = '\000';
     PreferredHeight = 19;
     PreferredSize = {Width=4, Height=19};
     ProductName = "MicrosoftR .NET Framework";
     ProductVersion = "4.0.30128.1";
     ReadOnly = false;
     RecreatingHandle = false;
     Region = null;
     Right = 130;
     RightToLeft = No;
     ScrollBars = None;
     SelectedText = "";
     SelectionLength = 0;
     SelectionStart = 0;
     ShortcutsEnabled = true;
     Site = null;
     Size = {Width=100, Height=19};
     TabIndex = 1;
     TabStop = true;
     Tag = null;
     Text = "";
     TextAlign = Left;
     TextLength = 0;
     Top = 50;
     TopLevelControl = System.Windows.Forms.Form, Text: MyFirst Window;
     UseSystemPasswordChar = false;
     UseWaitCursor = false;
     Visible = true;
     Width = 100;
     WindowTarget = System.Windows.Forms.Control+ControlNativeWindow;
     WordWrap = true;}
 
ではいくつかプロパティの値をいじってみます。
 
○テキストを変更不可にする
> myTextBox0.ReadOnly <- true;;
val it : unit = ()
これで変更不可となります。
> myTextBox0.ReadOnly <- false;;
val it : unit = () でもとに戻ります。
 
○入力できる文字数を制限する
> myTextBox0.MaxLength <- 3;;
val it : unit = ()
デフォルトでは32767です。もとにもどしておきます。
> myTextBox0.MaxLength <- 32767;;
val it : unit = ()
 
○右寄せ、センタリングをおこなう。
右寄せ
> myTextBox.TextAlign <- System.Windows.Forms.HorizontalAlignment.Right;;
val it : unit = ()
センタリング
> myTextBox.TextAlign <- System.Windows.Forms.HorizontalAlignment.Center;;
val it : unit = ()
左寄せ(デフォルト)
> myTextBox.TextAlign <- System.Windows.Forms.HorizontalAlignment.Left;;
val it : unit = ()
 
 
○複数行入力可能にする
> myTextBox0.Multiline <- true;;
val it : unit = ()
ただしこれだけでは、複数行を入力中に上下に行があるのやらやいのやらが分かりにくいので、表示部分を大きくしたり、右にスクロールバーがつくようにします。
縦方向のスクロールバーをつけてみます。
> myTextBox0.ScrollBars <-ScrollBars.Vertical;;
val it : unit = ()
ただこれでは、まだ一行だけの表示なので、少しテキストボックスを大きくしてみます。
> myTextBox0.Height <- 115;;
val it : unit = ()
 
○テキストのカーソル(キャレット)を動かす
まずはテキストボックスにアルファベットのaからzまでを入力した状態にしておきます。
 
> let alphabeta = new string( [| for ch in 'a' .. 'z' -> ch|])
myTextBox0.Text <- alphabeta;;
 
val alphabeta : string = "abcdefghijklmnopqrstuvwxyz"
 
これで、
 
> myTextBox0.SelectionStart <-10;;
val it : unit = ()
 
とすればjとkの間部分にカーソルが移動します。
さらに
 
> myTextBox0.SelectionLength <- 3;;
val it : unit = ()
 
でklmが選択状態となります。
 
選択している文字列は次のように得ることができます。
 
> myTextBox0.SelectedText;;
val it : string = "klm"
 
すべての文字を選択状態にするには
 
> myTextBox0.SelectAll();;
val it : unit = ()
 
とします。
 
次回はイベントをいじってみます。
スポンサーサイト

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

コメントの投稿

非公開コメント

プロフィール

T GYOUTEN

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

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

この人とブロともになる

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