• ベストアンサー

操作するラベルを動的に変化させたい

Label1~Label10のラベルがあり ボタンを押すと1~10までの乱数が発生し 対応したラベルの表示が変わるというプログラムを作っています。 以下のようなswitch文で、1の場合はLabel1、10の場合はLabel10、という風にはできるのですが そうではなく、Labelという文字列に乱数をひっつけてそれを操作ラベル名としたいのですが、やりかたが分からなくて困っています。 switch(乱数){ case 1: Label1->Text = "Hello, World!"; break;         ・         ・         ・ case 10: Label10->Text = "Goodbye, World!"; break; } どなたかアドバイスをよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • meruty
  • ベストアンサー率81% (9/11)
回答No.2

ラベルを乗せているコンテナ(Form?Panel?)にコントロールのコレクションがないか確認してください。  int i = 1から10の乱数  char ctrlName[16];  ctrlNameに文字列"Label"+iの値を編集したものをセット。  this->Controls(ctrlName)->Text = .... お役に立てなかったらごめんなさい m(_ _)m

参考URL:
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.aspx
presence2006
質問者

補足

お返事ありがとうございます! なるほど、Controlsってのがあるんですね! 試してみたいと思います!ありがとうございます!

その他の回答 (1)

  • clsdi99
  • ベストアンサー率63% (31/49)
回答No.1

Labelオブジェクトを配列にしたら良いのではないでしょうか?

presence2006
質問者

補足

ご回答ありがとうございます! なるほど、実はオブジェクトを配列にできればできるのにな、とは 思っていたのですが、具体的なコーディングが分からずに困っていました。 検索するとVBやVC#では具体例がよく見るのですが VC++2005(C++/CLI)の場合はどうすればよいのでしょうか・・・? ちなみに、label1の宣言は private: System::Windows::Forms::Label^ label1; となっています。 申し訳ございませんが、ご回答よろしくお願いいたします。

関連するQ&A