• ベストアンサー

コントロール配列と同じような扱い方

fumufumu_2006の回答

回答No.3

質問の答えとは違いますが、下のような事もできますよ。 TextBox1・・・TextBox10 のイベントを1つで管理できます。 Private Sub TextBox_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles _ TextBox1.Click, TextBox2.Click, TextBox3.Click, TextBox4.Click, TextBox5.Click, TextBox6.Click, TextBox7.Click, TextBox8.Click, TextBox9.Click, TextBox10.Click sender.text = sender.name 'でも、下の方がお勧め DirectCast(sender, TextBox).Text = DirectCast(sender, TextBox).Name 'こちらでもいいか Dim tb As TextBox tb = sender tb.Text = tb.Name End Sub

xiaolong_goo
質問者

お礼

最初のパターンは、めんどくさそうですね・・・ DirectCastも調べてみました。なんとなく使いにくそうです。 いろいろ方法があって、勉強になります。 コードを貼り付けて試してみます。

関連するQ&A

  • 配列化

    VB2005においてlabel,textboxといったコントロールを配列化したいのですがどうすればいいでしょうか? VB6では下記のコードが成り立ちますが・・・ For i=0 to 3 label(i).caption = str(i) Next このようにコントロール自体を配列化することは出来るのでしょうか?

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

  • vb2008 コントロール配列

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

  • コントロール配列について、基礎で躓いています。

    Visual Basic 2010でプログラムを作成しています。 今、ラベルが約30個フォームに貼ってあり、そのtextをすべてtextbox1のtextに変更されるようにしたいと考えています。 Label1.text = Textbox1.text Label2.text = Textbox1.text としていけば確実なのでしょうが、簡素化したいのです。 いろいろと検索して心身ともに消耗しきったため、最後の綱として質問させていただきました。 たとえばtextbox1のコードとして Dim btn(30) As Button For i = 1 To 30 btn(i) = Me.Controls("Button" & CStr(i + 1)) btn(i).Text = CStr(i + 1) Next i と書きいれるとNullReferenceExceptionというエラーが出てきてしまいます。 何か書き足りないのでしょうか。何卒よろしくお願いします。

  • VB.NETでテキストボックスをコントロール配列のように扱いたいんですが

    VB.NETではコントロール配列はサポートされていませんが、TextBox1~TextBox10を配列のように扱う方法はありますか?ちなみに、以下の方法ではエラーとなりました。 Controls("TextBox" & i).Text でTextの内容を取得しようとした よろしくお願いします。

  • CheckBoxのコントロール配列について

    VB2008を使用しています。 True状態のCheckBox1~70をButtonを押すことによってFalse状態にさせようとしていますが、一つずつコードを記載するのは長くなってしまうため以前こちらに投稿されていたTextBoxのコントロール配列を参考に下記のコードを作成しました。 Dim c As Integer For c = 1 To 70 Me.Controls("CheckBox" & c.ToString).Checked = False Next しかし、このコードでは下記のエラーが出てしまいます。 "CheckedはSystem.Windows.Forms.Controlのメンバではありません。" どなたかお知恵をお貸し下さい。

  • フォーム上のすべてのTextBoxを空にしたい

    現在適用中のコード:(VB2008) Dim objtextbox As Control For Each objtextbox In Me.Controls objtextbox.Text = "" Next 問題: 1、VB6と違い、Captionプロパティがなくなったため、TextBox以外のTextプロパティも空になってしまうので、コントロールがTextBoxのときだけ処理したい。 2、上記のコードだと、フォーム上にあるグループボックスの中は適用されない。In Me.controles 一発ですべてのグループボックスの中のTextプロパティまで処理したい。 3、そんなのは無理という場合、すべてのコントロールをフォームがロードされた状態にしたい。(できれば、CloseしてShowするのは避けたい) いろいろ試してみましたが、うまくコードがかけません。ご迷惑をおかけいたしますが、皆様の知恵をお貸しください。

  • VB2005でのコントロール配列?

    お世話になってます。 私はVB入門者です。 使用している用語などに間違いなどがありましたら ツッコんでやって下さい。 VB2005にて、フォーム内にcomboboxが10個あります。 Load時にT_boxの1~10に同じ、配列case_T を代入したいのですが 下記のコードをどのように直せばよいのでしょうか。 VB6まではコントロール配列?というものが、あったようですが 今回求めている処理はそのコントロール配列に該当するのでしょうか? -------------------------------- case_T内の値は 動的な値A,b,c,d,e,f,gがはいっていて それをT_boxの1~10に格納したいです -------------------------------- Dim T_box() As ComboBox = {T_box1, T_box2, T_box3, T_box4, T_box5, T_box6, T_box7, T_box8, T_box9, T_box10} Dim m As Short ReDim T_box(T_box.Length - 1) For n = 0 To T_box.Length - 1 T_box(cont + 1).Items.Clear() For m = 0 To case_T.Length - 1 T_box(cont + 1).Items.Add(case_T(cont)) cont += 1 Next Next T_box1.ResetText() cont = 0 End Sub

  • ASP.NET2.0でのコントロール配列

    早速質問させていただきます。 VB2005のWindowsアプリではtagプロパティを使ってオブジェクトの特定ができたので コントロール配列が可能でした。 '---ハンドラー作成 For i = 0 To 9 '//コイル1 AddHandler txt_(i).MouseDoubleClick, AddressOf txt_MouseDoubleClick txt_(i).Tag = i Next '---イベント処理 Private Sub txt_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim i As Integer i = CType(sender, TextBox).Tag end sub しかしASP.NET2.0のテキストボックスやコマンドボタンにはtagプロパティがない?ため、 イベント元オブジェクトを特定できません。これは代わりとなるプロパティがあるのでしょうか? それとも、ASP.NET2.0ではWindowsアプリのようなコントロール配列はできないのでしょうか? ご教授のほどよろしくお願い致します。