掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
tablelayoutpanel内のLabelコントロール (ID:143304)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
TableLayoutPanel1.Controls("Label" & i) や TableLayoutPanel1.GetControlFromPosition から 返される値のデータ型が、『Control クラス』であることに注意してください。 Control クラスには Text / BackColor / ForeColor プロパティがありますが、 Control クラスに TextAlign プロパティはありません。(Label や TextBox にならありますが) > 別に方法があるのでしょうか? 本来のデータ型にキャストしてあげれば OK です。 DirectCast(TableLayoutPanel1.Controls("Label" & i), Label).TextAlign = ContentAlignment.MiddleRight あるいは Linq を使う手法もあります。 'Label1〜Label100 以外の名前のラベルが含まれる場合は、Where などでフィルタリングする For Each lbl In TableLayoutPanel1.Controls.OfType(Of Label)() lbl.Text = lbl.Name.Substring("Label".Length) lbl.TextAlign = ContentAlignment.MiddleRight lbl.BackColor = Color.Blue lbl.ForeColor = Color.White Next ------ 上記のほかにも、レイトバインドを利用する手法があります。 具体的には、Object 型に対するアクセスするとか、 CObj(TableLayoutPanel1.Controls("Label" & i)).TextAlign = ContentAlignment.MiddleRight もしくは、CallByName を利用するという方法です。 CallByName(TableLayoutPanel1.Controls("Label" & i), "TextAlign", CallType.Set, ContentAlignment.MiddleRight) ただしこれらの手法だと、開発時における入力ヒント(IntelliSense)の支援が受けられませんし、 スペルミス(TextAlign → TextArain など)があっても、コンパイル時点では検出されません。 そのため、レイトバインドを利用することはあまりお奨めしません。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.