VB.NET ComboBoxのItem追加方法についての質問

このQ&Aのポイント
  • VB.NETでのComboBoxのItem追加方法について、初心者の方がお困りのようです。ComboBoxのItemを一行ずつ追加する方法は理解できているようですが、HTMLでのListBoxのOPTIONS設定と同様にArrayListを使って一括追加する方法がわからないようです。
  • 一行ずつ追加する場合は、まずComboBoxのItemsをクリアしてから、ComboItemsクラスのインスタンスを作成し、Addメソッドを使って値を追加します。
  • 一括追加する場合は、ArrayListにComboItemsクラスのインスタンスを追加した後、ComboBoxのItemsにArrayListを代入する方法が必要ですが、具体的な方法がわからず困っているようです。
回答を見る
  • ベストアンサー

ComboBoxのItem追加

VB.NETでの開発初心者です。 ComboBoxのItem追加について、1行づつ追加していくのは理解できているのですが、HTMLでのListBox「OPTIONS設定」の様にArrayListにて一括追加する方法がわかりません。 ご存知の方、よろしくお願いします。  <1行づつ追加>  Me.ComboBox1.Items.Clear()  Me.ComboBox1.Items.Add(New ComboItems(Key値, 表示値))    ※ComboItemsクラスは、別途作成 <一括追加>  Dim comboArray As New ArrayList  comboArray.Add(New ComboItems(Key値, 表示値))  Me.ComboBox1.Items.???(comboArray) ← ここがわからない  

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

  • ベストアンサー
回答No.2

#1 Wizard_Zeroです。 > 「.NET Compact FrameWork 2.0」なので、AddRange()メソッドが使用できない様に思われます。 AddRangeだけでなくCopyToもサポートされていませんね・・・。 AddRangeが使えないのであれば、For~Nextで配列要素をひとつずつ追加していくしかないかな・・・。 For Each objEnum As Object In comboArray Me.ComboBox1.Items.Add(objEnum) Next

miho03_03
質問者

お礼

ご回答ありがとうございます。 やはり、そういう事でしたか。 プロトタイプを作成していて、例示のように「配列要素をひとつずつ追加」していく方法で実装しております。 本当は、UI側で「1件づつ格納」をやめたかったのですが、仕方がありませんね。    <実装内容> ' Item作成クラスの返却値を、ComboBoxに1件づつ格納する For Each items As ComboBoxItems In xml.getXmlElement() Me.xmlComboBox.Items.Add(items) Next

その他の回答 (1)

回答No.1

リストに配列を追加するにはAddRangeメソッドを使います。 Me.ComboBox1.Items.AddRange(comboArray.ToArray())

miho03_03
質問者

補足

ご回答ありがとうございます。 AddRange()メソッドを使用して、ArrayListより追加ができる事は確認できたました(.NET FrameWork 3.5)。 ただ、残念ながら今回の開発では「.NET Compact FrameWork 2.0」なので、AddRange()メソッドが使用できない様に思われます。 何か代替手法は存在しますでしょうか?

関連するQ&A

  • 実行時追加したコントロールの識別

    VB2008を使用しています。 プログラム実行中に追加したコントロールをどのように識別すればいいのかがわからなくて困っています。 例えば以下のようにすると、 itemsが1と2のコンボボックスが10個できますが、 すべてNewComboBoxという名前のコントロールのため、 最終的にそれぞれ1か2どちらを選択したかを知りたいときに、 10個のコントロールをどのように識別すればよいかわかりません。 Dim NewComboBox As ComboBox = New ComboBox() For i = 1 To 10 NewComboBox = New ComboBox() NewComboBox.Items.Add(1) NewComboBox.Items.Add(2) NewComboBox.Location = New Point(5, 5 + (24 * (i - 1))) Me.Controls.Add(NewComboBox) Next 説明が不明瞭であるかもしれませんが、 お分かりの方いらっしゃいましたら、ご回答願います。

  • VB2005 ComboBoxの値の取得について

    VB入門者なのですがよろしくお願いします。 VB2005のComboBoxで、   ComboBox1.Items.Add("個人")   ComboBox1.Items.Add("クラス") ComboBox1.Items.Add("全体") これらの項目にそれぞれ値を取得させたいのですが、その方法がわかりません。 もしよろしければ、ご支援お願いします。

  • VB2008 comboboxを連動させた際のエラー

    先日より取り組んでいる顧客検索プログラムですが、combobox1でササキを選ぶとcombobox2には北海道、combobox3には札幌市と表示させたいと思います。先日もアドバイスをいただきそれを参考にすすめていますが、「'0' の InvalidArgument=Value は 'SelectedIndex' に対して有効ではありません。 パラメータ名: SelectedIndex」というエラーが出てしまいどうしても解決出来ません。このエラーの後さらにデバッグすると思ったとおりに動作するのですが、エラーを解決するにはどう対処すると良いのでしょうか?下記が現在のソースとなります。どうかアドバイスをお願い致します。 ササキ,北海道,札幌市, スズキ,東京都,あきる野市, サトウ,愛知県,名古屋市, ハヤシ,北海道,旭川市, が TextFile1.txtです。 Imports System.IO ------------ Public Class Form1 Private Sub Form1_Load(省略~ Dim fn As String = "C:\TextFile1.txt" Dim read As System.IO.StreamReader = My.Computer.FileSystem.OpenTextFileReader(fn, System.Text.Encoding.Default) Dim dline() As String Dim namelist As ArrayList = New ArrayList() Dim adr1list As ArrayList = New ArrayList() Dim adr2list As ArrayList = New ArrayList() dline = Split(read.ReadToEnd, vbCrLf) Dim srcary() As String Dim i As Integer For i = LBound(dline) To UBound(dline) srcary = Split(dline(i), ",") namelist.Add(srcary(0)) adr1list.Add(srcary(1)) adr2list.Add(srcary(2)) Next ComboBox1.DataSource = namelist ComboBox1.SelectedIndex = -1 ComboBox1.Text = "名前" ComboBox2.DataSource = adr1list ComboBox2.SelectedIndex = -1 ComboBox2.Text = "住所1" ComboBox3.DataSource = adr2list ComboBox3.SelectedIndex = -1 ComboBox3.Text = "住所2" End Sub ------------- Private Sub ComboBox1_SelectedIndexChanged(省略~ If ComboBox1.SelectedIndex > -1 Then ComboBox2.SelectedIndex = ComboBox1.SelectedIndex Else ComboBox2.Text = "" End If End Sub

  • VB.net comboboxの操作で

    下記ソースでiiによってCombobox1の値を変更したいのですが 「ComboBox1.Text =」にすると ComboBox1_SelectedIndexChanged にかかれたプログラムが動いてしまいます。 ComboBox1_SelectedIndexChangedが動かずに ComboBox1に値設定する方法ないでしょうか。 ------------------------------------------------program ComboBox1.Items.Add("みかん") ComboBox1.Items.Add("りんご") ComboBox1.Items.Add("すいか") if ii=1 then ComboBox1.Text = "みかん" if ii=2 then ComboBox1.Text = "りんご" if ii=3 then ComboBox1.Text = "すいか" 環境 VB 2008 express OS Windows XP

  • DataGridViewのデータをComboBoxの項目に追加する

    回答お願い致します。 現在、VB2005を勉強していてDataGridViewを学んでいます。 DataGridViewの項目に(教員番号,教員名)とあるとして、教員名のデータをComboBoxの項目に追加したいと考えています。 普通に項目を追加するのなら、 For intLoop = 0 To DataGridView.Rows.Count - 1 ComboBox.Items.Add(DataGridView.Rows(intLoop).Cells (1).Value) Next といった感じで出来るのですが、これだと教員名が重複している場合も全てComboBoxに項目を追加してしまうので、それを避けて項目を追加する良い方法はないでしょうか?

  • ComboBoxの値(Items)をVBコードで表したい

    ComboBox1のプロパティのItemsのコレクションに 1行目 2行目 と入力すると。きちんと表示されます。 しかし都合上、コードで記載したいのですが、 Me.ComboBox1.Items = "1行目";"2行目" とすると、 エラー 1 プロパティ 'Items' は 'ReadOnly' です。 エラー 2 文字が有効ではありません。 となります。 コードで指定することはできないのでしょうか?

  • ComboBoxについて

    ComboBoxのアイテムリストからアイテムを選んだら 選んだアイテムに対応した別の文字列 をComboboxに表示したいと思います。 動き的には Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  ComboBox1.Text = ""  ComboBox1.Items.Add("000")  ComboBox1.Items.Add("001")  ComboBox2.Text = ""  ComboBox2.Items.Add("0個目")  ComboBox2.Items.Add("1個目")  ComboBox2.Visible = False End Sub Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged  Select Case ComboBox1.SelectedIndex   Case 0    ComboBox1.Visible = False    ComboBox2.Visible = True    ComboBox2.SelectedIndex = 0   Case 1    ComboBox1.Visible = False    ComboBox2.Visible = True    ComboBox2.SelectedIndex = 1  End Select End Sub Private Sub ComboBox2_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.GotFocus  ComboBox1.Visible = True  ComboBox1.DroppedDown = True  ComboBox2.Visible = False End Sub こんな感じで、ComboBoxを二つ使えば実現できるのですが一つだけでも実現できる方法が ありましたら、教えてくださいませ。

  • データグリッドビューの任意の列を削除

    VB2010にて、下記のコードを実行すると、左端にいらない列が表示されます。 左端にコンボボックスを表示したいのですが、うまくいきません。 左端の列を削除する方法。 または、左端にコンボボックスを表示する方法を教えていただけませんでしょうか。 ご存知の方、どうぞよろしくお願いいたします。 '■■■データグリッドビューセット■■■ '初期化 Me.DataGridView1.Columns.Clear() '最下部の新しい行を非表示 Me.DataGridView1.AllowUserToAddRows = False '行追加 Me.DataGridView1.RowCount = 気筒数 + 2 'コンボボックス列を追加 Dim i As Integer Dim BS As New BindingSource() For i = 1 To 系列数 BS.Add(系列名(i)) Next i Dim ComboBox As New DataGridViewComboBoxColumn() ComboBox.HeaderText = "系列名を選択" ComboBox.DataSource = BS Me.DataGridView1.Columns.Add(ComboBox) Me.DataGridView1.Columns(0).Width = 110

  • VB2015 ListBoxの二次元配列を呼出す

    始めまして。 趣味でVBソフトを作りたいと奮闘中です。 ExcelVBAやC#の簡単ソフトを作った経験があります。 パソコン環境は、W10x64、VB2015です。 ListBoxに2次元配列で下記のように書き込み、選択した行の右側のデータ(欄2)を他のTextBoxに表示させたいのです。 下のデータを2次元配列にして読み込ませる方法と、選択した行の欄2のデータを取り込む方法を教えて頂けると嬉しいです。ListBoxのプロパティのMultiColumnはTrueにしてあります。  欄1 欄2 北海道  550 青森県  138 宮城県  230 東京都  1360 現在は次のようにしてなんとか逃げておりますが、2次元配列でスマートに出来れば嬉しいです。 書き込み ListBox1.BeginUpdate() ListBox1.Items.Add("北海道 , 550") ListBox1.Items.Add("青森県 , 138") ListBox1.Items.Add("宮城県 , 230") ListBox1.Items.Add("東京都 , 1360") ListBox1.EndUpdate() 呼び出し Dim textArray = ListBox1.SelectedItem.ToString.Split(",")  Dim Jinko As Single = Single.Parse(textArray(1)) TextBox.Text = Jinko 宜しくお願い致します。 熊谷

  • ComboBoxの表示

    VB2005の質問です。 コンボボックスの表示を「番号:グループ番号:名前」として、値の取得を「番号」のみしたい場合、どのようにしたらよろしいでしょうか? 表示データと値の収納はSQLServer2005を利用しています。 ComboBox1.Items.ADD("番号" & ":" & "グループ番号" & ":" & "名前") と今は書いています。

専門家に質問してみよう