メモ書き GUIオブジェクトの配列化
オブジェクトの名前を配列に保存できるのを知った時目から鱗だったわ。
型[] 配列名 = new 型[]{オブジェクト};
書き方は配列のそれと同じですぐに使い方がわかる。
GUIで複数のテキストボックスに文字を代入したいとき、
TextBox tests = new TextBox { test1, test2, test3 };
と配列宣言しておき
for(int i=0; i<3 ;i++){
tests[ i ].Text = "test" + Convert.ToString( i+1 );
}
と書けば、test1のテキストがtest1に、test2がtest2にといった風に記述できる。
GUIはオブジェクトのクラス(TextBoxとかCheckBoxtoとか)を「 Control 」で大体用意できる。
他にも自分で用意したクラス、たとえばcharacterとかでも配列化できる。
public static character PC1 = new character();
public static character PC2 = new character();
public static character PC3 = new character();
public static character PC4 = new character();
public static character PC5 = new character();
public static character PC6 = new character();
こんな風にメインクラスでPC1~6をクラス変数で用意しておき、
character PCs = new character { main.PC1, main.PC2, main.PC3, main.PC4, main.PC5, main.PC6 };
というのをGUIのクラスに記述すればGUIの処理の中でPC1~6をPCs[int index]で表現できる。
characterクラスにpublic void test()メソッドが定義されていたとき、GUIからは
PCs[0].test();
と書くだけで実行できる。そのまま書こうとすると
main.PC1.test();
になってしまう。この状態だとPC1~6を一斉に処理するときforなどが使えない。
配列化しておけば上の例のように
for(int i=0; i<6 ;i++){
PCs[ i ].test();
}
とPC1~6のtestメソッドを3行(実質1行)で記述できる。
これは便利。