• ベストアンサー

VB2005 ラベル(ボタン)をコントロール配列のようにしたい

VB2005を使用していますが、画面に貼り付けている同じ名前のラベルおよびボタンをコントロール配列のようにしたいのですが、方法が分かりません。VB6ではラベル(ボタン)のIndexに番号を付けていけばよかったのですが。どなたか知ってれば教えて頂きたいのですが。 よろしくお願いします。

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

  • ベストアンサー
  • HIROs-NET
  • ベストアンサー率78% (15/19)
回答No.2

実は、コントロール配列はデザイン時には作成できませんが、動的に(プログラムから)作成することは可能です。 以下ご参考 ラベルですが Form_Loadなどで下記のようにすれば、配列にして作成することが可能です 'ラベルの配列を作成する Private MyLabels() As System.Windows.Forms.Label Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase,Load MyLabels = New System.Windows.Forms.Label(99) {} For I As Integer = 0 To MyLabels.Length - 1 'Nameプロパティの設定 MyLabels(I).Name = "Label" + I.ToString() 'Textプロパティの設定 MyLabels(I).Text = LoadResString(I) 'Labelサイズの設定 MyLabels(I).Size = New Size(20, 10)  '配置場所の設定 MyLabels(i).Location = New Point(自分の配置したいX, 自分の配置したいY) Next '作成したコントロールをフォームに配置する Me.Controls.AddRange(MyLabels) End Sub

shimakichi
質問者

お礼

HIROs-NET様、早速の回答ありがとうございました。早速試したいと思います。本当にありがとうございました。

その他の回答 (1)

  • HIROs-NET
  • ベストアンサー率78% (15/19)
回答No.1

VB2005には(というより.NETからは)コントロール配列はなくなりました。 かわりにイベントを共通して使用することが可能です。 たとえば、フォーム上にButton1、Button2の2つに対して共通のクリックイベントを使用する場合は 1)2つのボタンを選択状態にする 2)プロパティウィンドウのところのカミナリマークボタンを押す 3)Clickイベントのところをダブルクリックする すると下記のようなコードが自動作成されると思います Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click End Sub Handlesの後ろにButton1.Click、Button2.Clickがありますが、主導で追加することも可能です。 で、どのボタンが押されたかを判断するには、引数のsenderを使用します。 senderはイベント発生元情報が入っていると考えればよいでしょう。 senderはオブジェクト方なのでDirectCastを使ってButton型に変換しNameプロパティを取得すれば、どのボタンが押されたか判断することが出来ます。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click MessageBox.Show(DirectCast(sender, Button).Name & "がクリックされました") End Sub

shimakichi
質問者

補足

HIROs-NET様、早速の回答ありがとうございます。これから試してみます。それとラベルの件ですが、VB6で作成中の時、Label(0)~Label(100)を作成し、For ~ Next 文で文字を代入していましたが、VB2005でも可能でしょうか? For i = 0 to 100 Label(i) = LoadResString(i) Next i すみませんが、こちらもご教授頂きたいのですが。 よろしくお願いします。

関連するQ&A

  • vb2008 コントロール配列

    VB6からVB2008へ移行を検討しているものです。 そこで質問なんですが、VB2008でコントロールの反復処理はどう処理すればいいのでしょうか? VB6の時はコントロール配列を使用して、ForNextで繰り返せばそれらしいことはできました。VB2008はコントロール配列がサポートされていないのでどうすればいいかわかりません。みなさんはどう反復処理を行っているのか教えていただきたいと思います。 具体的な処理として、テキストボックス1~10があり、そのテキストボックスの内容を1~10の順番で、テキストボックス11~20に格納する。以上、宜しくお願いします。

  • コントロール配列の多次元配列

    http://dobon.net/vb/dotnet/control/buttonarray.html のサイト内の、「"特定の名前" + "1から連続する数字"」という名前を持つコントロールを配列にするメソッドを使用してのコントロール配列の多次元配列の方法はどのようにすれば良いでしょう?今現在調べている最中ですがよくわかりません。よろしくお願いいたします。

  • VB6からの移行したいけど、VB.NETのコントロール配列は?

    VB6ではフォーム上にボタンコントロールとかを配列で作成できクリックされた時にはボタンイベントのインデックス値によってどのボタンを押されたが判断できて各処理を記述できていましたが、VB.NETでは同じようにはできないようです。オブジェクト指向的?にはこちらがいいのでしょうが、どうも面倒くさくなったなぁというイメージしかわかず、なぜこの方がいいのかという納得いく書籍とかも見つけることができていません。 どなたか、ご教授頂きたいのですがよろしくお願いします。参考になる書籍やWEBとかもありましたらお教えいただければ幸いです。

  • VB2005 コントロール配列について教えていただけませんか?

    現在VB2005を用いてプログラムを行なっている初心者です。 ここのサイトでVB2005ではコントロール配列は使用できないことを知りました。そこで、例えばフォーム上にTextBoxを5個配置して、各TextBoxに入力された値を配列に格納するのにはどのようにすれば良いでしょうか? data(0) = textbox1.text data(1) = textbox2.textと一つずつやるしかないでしょうか・・・ For文などを用いて簡単にできる方法を教えてください。 よろしくお願い致します。

  • .net 2010VB配列TextBox貼り付ける

    初めて質問致します。 よろしくお願い致します。 超初心者レベルです。 VB6の時に、Formにテキストボックスやラベルなどを1つ貼り付け、それをコピーすると「配列にするか?」と聞かれていました。 今、.net 2010 VB でテキストボックス(ラベル)をコピーしても、配列にするかどうか聞いてくれません。 プログラム等ではなく、手動でFormに貼り付け時に、配列にする方法を教えて下さい。 (どのプロパティが、配列のインデックスなのかが分かりません。) <(__)>

  • VBAでコントロール配列を持つことは可能ですか?

    Excel2002、OSはXPです。 VBではコントロールに配列を持つことが出来ましたが、 VBAでコントロール配列を持つことは可能でしょうか? やりたいことはユーザーフォームにラベルを100個ぐらい貼り付けて、 テキストボックス入力した値がCell(i,1)と等しければ、 i番目のラベルのCaptionに文字を入力したい。という感じです。 もしVBのようにコントロール配列を持てれば、 If TextBox1.text=Cells(i,1) Then Label(i).Caption="~~" という風に出来るのですが、どうも配列の設定がVBのようにできません。 プロパティにINDEXが無いですし、オブジェクト名を同じにしたら エラーとなってしまいますし。。 もし出来ないのであれば、何か回避策のようなものはないでしょうか? 力技で100個IFを書けば出来ることは出来るのですが・・ If TextBox1.text=Cells(i,1) Then If i = 1 Then Label1.Caption="~~" ElseIf i=2 then Label2.Caption="~~" ・・・・

  • VB2005におけるコントロール配列

    VB2005でフォーム上にTextBoxがいくつかあるとしますと、そのTextBoxをコントロール配列のようにしたいのですがどのようにすればよいのかわかりません。調べてみたのですがわからなかったのでお力をお貸しください。よろしくお願いいたします。

  • VBで言うところのコントロール配列をするには?

    VBScriptを使って、VBで言うところのコントロール配列を作成することは可能でしょうか? Command1(0)、Command1(1)というようなものを作りたいのですが... 今回、ASPを初めて使うのでよくわかりません。 よろしくおねがいします。

  • .net ラジオボタンについて

    こんにちは。 .netを始めたばかりでラジオボタンの使い方が分からなくて困っています。 vb6ではラジオボタンをコントロール配列にした時Indexをつかって何番目のラジオボタンがチェックされたかというのが判断できたのですが、.netにはコントロール配列がなく、今はpnelでラジオボタンを囲っています。 vb6のようにIndexなどで、何番目のラジオボタンかを判断する方法はないのでしょうか? よろしくお願いします。

  • .NETのコントロール配列(VB4からの移行)

    扱うデータが単純だったのでずっとVB4を使ってきたのですが、excelのVBAなどと絡めて使おうとするとうまく機能しない部分があったり、XP上では走らなかったりということもあり、.NETに移行しようと努力しているものです。肝心の質問ですが.NETでコントロール配列が使えないのは何かと不便だと思っているのですが、10個のラジオボタンを押すとindexの数値を取得するという部分を.NETで記述する場合、例えば1番目のラジオボタンをオンにすると変数HenNoに1を代入するということを書くと以下の様になるのですが If RadioButton1.Checked = True Then HenNo = 1 End If 以下2から10まで上記の1のところの数値を置き換えてそれぞれ書いていくということしか方法はないのでしょうか?何か非常に無駄に見えるし、わかりづらくなるような 気がするのですが・・・・ よろしくお願いします