業務の中で、コントロールのプロパティ値を外部ファイルに持たせて、動的に変更したいという要望がありました。
そこで、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";
Please follow and like us:
コメント