TextBoxはButtonと同じようにフォームに貼り付けます。
次の例は、Popupボタンを押すと、
TextBoxに入力したテキストをMessageBoxで表示するものです。
textbox1.js
-------------------------------------------------
import System;
import System.Windows.Forms;
import System.Drawing;
var f : MyForm = new MyForm();
f.ShowDialog();
class MyForm extends Form {
var text1 : TextBox;
var btnDisplay : DisplayButton;
var btnClose : Button;
function MyForm() {
...
//TexBoxを作って配置
text1 = new TextBox();
text1.Width = 180;
text1.Left = 5;
Controls.Add(text1);
...
}
}
class DisplayButton extends Button {
...
//Popupボタンを押したとき
//TextBoxの内容をMessageBoxで表示する
protected override function OnClick(e : EventArgs) {
//他のコントロールへのアクセスはこれでいいのだろうか?
MessageBox.Show(MyForm(Parent).text1.Text);
}
}
TextプロパティでTextBoxに入力された値が得られます。
Multiline
プロパティをtrueにすると複数行入力ができるようになります。
textbox2.js
-----------------------------------------------------------------
...
var f : MyForm = new MyForm();
f.ShowDialog();
class MyForm extends Form {
var text1 : TextBox;
var wbtn : WordWrapButton;
var sbtn : ScrollButton;
function MyForm() {
text1 = new TextBox();
text1.Size = new System.Drawing.Size(180, 60);
text1.Left = 5;
text1.Multiline = true;
Controls.Add(text1);
...
}
}
class WordWrapButton extends Button {
...
//ボタンを押すとWordWrapがtrue <-> false
protected override function OnClick(e : EventArgs) {
MyForm(Parent).text1.WordWrap = !MyForm(Parent).text1.WordWrap;
}
}
class ScrollButton extends Button {
...
//ボタンを押すとスクロールバーが
//None->Horizontal->Vertical->Both->Noneとなる
protected override function OnClick(e : EventArgs) {
var t = MyForm(Parent).text1;
var s;
switch(t.ScrollBars) {
case ScrollBars.None: s = ScrollBars.Horizontal; break;
case ScrollBars.Horizontal: s = ScrollBars.Vertical; break;
case ScrollBars.Vertical: s = ScrollBars.Both; break;
default: s = ScrollBars.None; break;
}
t.ScrollBars = s;
}
}
ボタンを押すと、
WordWrap
プロパティと
ScrollBarsプロパティが変わります。
WordWrapプロパティは、
trueならテキストの1行がTextBoxの幅以上になると表示上折り返されます。
falseなら、表示されない部分が出てくることになります。
ScrollBarsプロパティは水平・垂直スクロールバーを表示するかしないかです。
TextBoxのテキストの選択範囲を変えたりそのテキストを取得したりできます。
textbox3.js
----------------------------------------
...
var f : MyForm = new MyForm();
f.ShowDialog();
class MyForm extends Form {
var text1 : TextBox;
var btn1 : MyButton;
var btn2 : MyButton;
var btn3 : MyButton;
var btn4 : MyButton;
...
}
//各ボタンを押したときの動作
//ボタンはラベルで区別する
class MyButton extends Button {
protected override function OnClick(e : EventArgs) {
var t : TextBox = MyForm(Parent).text1;
if(Text == "<-|") { //選択範囲を前に伸ばす
t.SelectionStart--;
t.SelectionLength++;
}
else if(Text == ">-|") { //選択範囲を前から縮める
t.SelectionStart++;
t.SelectionLength--;
}
else if(Text == "|-<") //選択範囲を後ろから縮める
t.SelectionLength--;
else //選択範囲を後ろに伸ばす
t.SelectionLength++;
t.Focus();
}
}
あらかじめテキストを入力してある範囲を選択しておいたとき、
ボタンを押すと選択範囲が1文字ずつ変わります。
SelectionStart
プロパティは範囲選択の開始位置を表します。
SelectionLength
プロパティは範囲選択の長さを表します。
SelectionStartを変えてもSelectionLengthは変わりません。
上のプログラムでは最後にTextBoxに
Focusメソッドを実行していることに注意。
あと、範囲チェックをしていないので、
何度も同じボタンを押しているとエラーになります。
選択されたテキストは
SelectedTextプロパティで得られます。
これとは別に、
Selectメソッドで範囲選択ができます。
t.Select(3, 5);
t.Focus();
4文字目から5文字分選択します。
SelectAllメソッドは、すべてのテキストを選択します。
t.SelectAll();
t.Focus();