[Windows アプリ] コントロールを文字列で操作する

業務の中で、コントロールのプロパティ値を外部ファイルに持たせて、動的に変更したいという要望がありました。

そこで、Controlsコレクションを使用したので、そのメモです。他にも手法はあるのですが、今回はこれを採用です。


フォーム上に貼り付けたコントロールは、Controlsコレクションを使用して取得することができます。

たとえば、フォーム上のコントロールのすべてのTextプロパティを変更するには、下記のような書き方ができます。

あくまでもTextプロパティを持つコントロールのみが配置されているという想定です。

VBの例

Dim I As Integer = 1

For Each c As Control In Me.Controls
    c.Text = "Text" & I
    I += 1
Next

C#の例

int i = 1;
foreach (Control c in this.Controls)
{
    c.Text = "Text" + i.ToString();
    i++;
}

さて、ここからが本題です。

Controlsコレクションを使用して、コントロールを操作する場合は、インデックスによる方法と、文字列でコントロールを特定する方法があります。

VBの例

'インデックスによる指定
Controls(インデックス).プロパティ = 値
'コントロール名(文字列)による指定
Controls(コントロール名).プロパティ = 値

C#の例

// インデックスによる指定
Controls[インデックス].プロパティ = 値
// 文字列による指定
Controls[コントロール名].プロパティ = 値

Label1というコントロールのTextプロパティに”HIRO”という文字列を設定する場合は、下記のように記述することができます。
VBの例

Me.Controls["Label1"].Text = "HIRO"

C#の例

this.Controls["label1"].Text = "HIRO";

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です