多くのボタン(50+)で構成され、接尾辞番号以外のすべてが同じ名前のフォームがあります。 (btn_0
,btn_1
,btn_3
など)複数のボタンのテキストを1回の操作で変更する
これらのボタンのテキストを1回の操作で変更したいと考えています。
配列のようなボタンを扱う方法はありますか?
btn_[i].Text = "something"?
おそらく文字列を実行しますか?
多くのボタン(50+)で構成され、接尾辞番号以外のすべてが同じ名前のフォームがあります。 (btn_0
,btn_1
,btn_3
など)複数のボタンのテキストを1回の操作で変更する
これらのボタンのテキストを1回の操作で変更したいと考えています。
配列のようなボタンを扱う方法はありますか?
btn_[i].Text = "something"?
おそらく文字列を実行しますか?
これを行うには、一度に各ボタンにアクセスする必要があります。
この
foreach(var btn in this.Controls)
{
Button tmpbtn;
try
{
tmpbtn = (Button) btn;
}
catch(InvalidCastException e)
{
//perform required exception handelling if any.
}
if(tmpbtn != null)
{
if(string.Compare(tmpbtn.Name,0,"btn_",0,4) == 0)
{
tmpbtn.Text = "Somthing"; //Place your text here
}
}
}
のようなループでそれを行うには、使用オーバーロードCompare methodのため見てください。
ループを作成できるボタンがいくつあるか分かっている場合は、それは完璧ではないし、これを行うよりスマートな方法かもしれないが、なぜ私は動作しないのか分からない
詳細を知っているが、パターンは、おそらくこの
for each(Control c in this.controls)
{
if(c is Button) //Check the type
{
Button b = c as button;
b.Text="new text";
}
}
または使用のように行くしないでくださいは、テキストのブロックとしてそれを行うために、そのautofilとテキスト連結能力に優れています。例:
btn1.text="hi";
btn2.text="world";
...
例外を避けるために、 'btn'変数を' as'を使ってキャストします。 – Shimrod
@ Shimrod「例外を避ける」という意味ではないと思います。「正しい」例外がスローされることを保証することを意味します。 –
@Shimrod @Davidのおかげで提案が..私はtryブロックを使用するのを忘れていました.. –