tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル複数Textbox内のデータを消すには
記事No8211
投稿日: 2008/09/24(Wed) 16:05
投稿者せんさん
VB6では配列を使用して
 For i=1 to 10
  Text(i).Text=""
 Next i
VB>NETでは
  Textbox1.text=""
  TextBox2.text=""
     ・
     ・
  Textbox10.text=""
としていますがVB.Netの場合配列処理はできないのでしょうか?

[ツリー表示へ]
タイトルRe: 複数Textbox内のデータを消すには
記事No8212
投稿日: 2008/09/24(Wed) 16:54
投稿者ダンボ
> としていますがVB.Netの場合配列処理はできないのでしょうか?

VB.netではコントロール配列を廃したので、VB6のようにはできません。
(1)コレクションに同種のテキストボックスを登録して配列化する。
(2)名前の規則性を利用して、"TextBox" & i のようにアクセスする。
のどちらかで。

[ツリー表示へ]
タイトルRe^2: 複数Textbox内のデータを消すには
記事No8226
投稿日: 2008/09/26(Fri) 14:13
投稿者せんさん
ダンボさん 早々のMail有難うございます。
(2)の方法で
        Dim I As Integer
        For I = 1 To 3
            "Textbox" & i &".text=""
        Next
上記のプログラムではエラーとなります。
なにか間違っていますか?

[ツリー表示へ]
タイトルRe^3: 複数Textbox内のデータを消すには
記事No8229
投稿日: 2008/09/26(Fri) 20:16
投稿者ダンボ
> なにか間違っていますか?

この言葉使いはちょっとムッときてしまいますね。
間違っているからコンパイルエラーになるのでしょうが!

丁寧に回答すれば、
DirectCast(Me.Controls("TextBox" & i.ToString), TextBox).text = ""
てな感じでしょうか。

これも、ゆうきさんご紹介のサイトも、花ちゃんさんの回答も、みんな同じことです。
「フォームのコントロールのコレクション」ということを勉強してみてください。

> サンプルの方法を利用させていただきます。

最初は盲目的に利用するだけでもいいんですが、せっかくのソースコード内容を
理解するようにしましょう。そうしないと応用が効かんです。

[ツリー表示へ]
タイトルRe: 複数Textbox内のデータを消すには
記事No8224
投稿日: 2008/09/25(Thu) 19:40
投稿者ゆうき
ゆうきです。
ここで、関数で代わりにしています。

http://www.geocities.jp/hatanero/indexer.html

[ツリー表示へ]
タイトルRe^2: 複数Textbox内のデータを消すには
記事No8227
投稿日: 2008/09/26(Fri) 14:18
投稿者せんさん
> ゆうきです。
> ここで、関数で代わりにしています。
>
> http://www.geocities.jp/hatanero/indexer.html

   【全文引用を避け、必要な部分のみを引用するようにして下さい。】
有難うございます。

サンプルの方法を利用させていただきます。

[ツリー表示へ]
タイトルRe: 複数Textbox内のデータを消すには
記事No8225
投稿日: 2008/09/25(Thu) 20:58
投稿者花ちゃん
投稿後、何度かご覧になっておられるようですが、返事がないところを見ると
理解できていないのかな?

これまでに答えていない方法をひとつ
ここの、サンプル投稿用掲示板のサンプル[Form上の全てのコントロールに同時にアクセスする(VB.NET)] を使って

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, _
                        ByVal e As System.EventArgs) Handles Button1.Click
   GetAllControls(Me)
End Sub

Private Sub GetAllControls(ByVal control As Control)
   If control.HasChildren Then
      For Each childControl As Control In control.Controls
         GetAllControls(childControl)
      '   Debug.WriteLine(childControl.Name)
        'テキストボックスだけにアクセスしたい場合
         If TypeOf childControl Is TextBox Then
            If childControl.Name = "TextBox3" Then
               '特定のテキストボックスを除外する場合を
            Else
               childControl.Text = ""
            End If
         End If
      Next childControl
   End If
End Sub

End Class

# 質問したなら、レスに対する返事は速やかにするようにしましょう。

[ツリー表示へ]
タイトルRe^2: 複数Textbox内のデータを消すには
記事No8228
投稿日: 2008/09/26(Fri) 14:28
投稿者せんさん
> 投稿後、何度かご覧になっておられるようですが、返事がないところを見ると
> 理解できていないのかな?
>
ご迷惑をおかけして申し訳ございません。勉強不足でよく理解できません。
ゆうきさんのサンプルを使用させてもらいました。

有難う御座います。今後とも利用させていただきます。

[ツリー表示へ]