tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル動的ListBoxに値を入れるには?[初投稿]
記事No4039
投稿日: 2006/08/01(Tue) 10:29
投稿者ダンボ
皆さんから遅れてやっとVB2005を入手しました。
とりあえず各サンプルの中から面白そうなものを改変して勉強しようと思っています。

MSDNオンライン>VB マイグレーションTips>コントロールを動的に作成する方法について
で、動的に生成したListBoxに値を入れてやろうと、下記コーディングにしたらビルドエラー
です。静的ListBoxならこれでいい筈なんですが、動的生成ListBoxの場合はどう書けば
いいんでしょうか?

Private setControl As System.Windows.Forms.Control
    setControl = New System.Windows.Forms.ListBox
    setControl.items.add("aaaaa")

[ツリー表示へ]
タイトルRe: 動的ListBoxに値を入れるには?[初投稿]
記事No4040
投稿日: 2006/08/01(Tue) 11:43
投稿者うなまな
> Private setControl As System.Windows.Forms.Control
>     setControl = New System.Windows.Forms.ListBox
>     setControl.items.add("aaaaa")

上記のコードはどこに書かれていますか?
フォームのLoadイベントで行うのなら、以下のようになります。

Public Class Form1

    Private _ListBox As System.Windows.Forms.ListBox

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.SuspendLayout()
        Me._ListBox = New System.Windows.Forms.ListBox
        With Me._ListBox
            .Location = New System.Drawing.Point(1, 1)
            .Size = New System.Drawing.Size(100, 100)
            .Items.Add("AA")
        End With
        Me.Controls.Add(Me._ListBox)
        Me.ResumeLayout(False)
    End Sub
End Class

[ツリー表示へ]
タイトルRe^2: 動的ListBoxに値を入れるには?[初投稿]
記事No4041
投稿日: 2006/08/01(Tue) 12:01
投稿者ダンボ
うなまな さん、どうも有り難うございます。

元サンプルはここです。
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/DynamicControl/

うなまな さんのコードでは
>     Private _ListBox As System.Windows.Forms.ListBox
と明示的にListBoxを宣言しているために
>             .Items.Add("AA")
が通るのだと思います。

それに対してMSの元サンプルでは、
> Private setControl As System.Windows.Forms.Control
と漠然とさせています(setControlにListBoxやTextBox等を割り当てたいため)
そのためビルド時には「.Itemsプロパティは無い」と怒られるのは当たり前と。。。

VB6では、そういう場合はDim setControl As Objectで逃げられたんですが、
VB.netではどうすればよいのでしょうか?

[ツリー表示へ]
タイトルRe^3: 動的ListBoxに値を入れるには?[初投稿]
記事No4042
投稿日: 2006/08/01(Tue) 12:31
投稿者うなまな
Private _ListBox As System.Windows.Forms.Control

Me._ListBox = New System.Windows.Forms.ListBox
CType(Me._ListBox, ListBox).Items.Add("AA")

こういう事?

[ツリー表示へ]
タイトル[解決]動的ListBoxに値を入れるには?
記事No4043
投稿日: 2006/08/01(Tue) 12:56
投稿者ダンボ
うなまな さん、どうも有り難うございます。

> CType(Me._ListBox, ListBox).Items.Add("AA")

そうです!!

# をぉ、キャストだ。
# さすが、VB.net=VB+VC (大嘘)だ、という感激を得ました。


元サンプルの改変部分
  Select Case CType(sender, System.Windows.Forms.Button).TabIndex
  Case 0
      setControl = New System.Windows.Forms.ListBox
      CType(Me.setControl, ListBox).Items.Add("AA")
      CType(Me.setControl, ListBox).Items.Add("BB")
      CType(Me.setControl, ListBox).Items.Add("CC")
  Case 1
      setControl = New System.Windows.Forms.ComboBox
      CType(Me.setControl, ComboBox).Items.Add("AA")
      CType(Me.setControl, ComboBox).Items.Add("BB")
      CType(Me.setControl, ComboBox).Items.Add("CC")
  Case 2
      setControl = New System.Windows.Forms.TextBox
      CType(Me.setControl, TextBox).Text = "AA,BB,CC,DD"
  Case 3
      setControl = New System.Windows.Forms.RichTextBox
      CType(Me.setControl, RichTextBox).ForeColor = Color.Red
      CType(Me.setControl, RichTextBox).Text = "AA,BB,CC,DD"
  End Select
  AddHandler Me.setControl.Click, AddressOf Me.Control_Click

  Sub Control_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
      MsgBox(sender.Text)
  End Sub

[ツリー表示へ]