• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:comboxのリストをファイルから読み込む方法)

comboxのリストをファイルから読み込む方法

このQ&Aのポイント
  • フォーム1にコンボボックス1があります。フォーム1をロードした際に、コンボボックス1にTextFile1.txtのリストを表示したいのですが、上手くいきません。
  • TextFile1.txtは、名前,住所,電話番号,,,,というように区切られていて、コンボボックスには名前だけを表示させたいと思います。使用しているソフトは、VisualBasic2008ExpressEditionで、WinXPを使っています。
  • 一応下記が現状のコードです。自分ではヘルプ・入門書などを見て書いてみましたが、行き詰ってしまいました。よろしくお願い致します。

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

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.3

元データは 項目1-1,項目1-2,項目1-3,項目1-4,項目1-5 項目2-1,項目2-2,項目2-3,項目2-4,項目2-5 項目3-1,項目3-2,項目3-3,項目3-4,項目3-5 項目4-1,項目4-2,項目4-3,項目4-4,項目4-5 上記のデータのファイル名 textcsv.csv Dim fn As String = "C:\Documents and Settings\****\My Documents\excel雑\textcsv.csv" Dim dline() As String Dim d() As String Dim ad As ArrayList = New ArrayList() Dim read As System.IO.StreamReader = My.Computer.FileSystem.OpenTextFileReader(fn, System.Text.Encoding.Default) dline = Split(read.ReadToEnd, vbCrLf) For i As Integer = LBound(dline) To UBound(dline) d = Split(dline(i), ",") ad.Add(d(0)) Next ComboBox1.DataSource = ad comboに 項目1-1 項目2-1 項目3-1 項目4-1 がセットされます。

lobin_2008
質問者

補足

ご回答ありがとうございます。 名前を表示させる事ができました。 ロードした際のコンボボックスの表示がいきなり名前になってしまいますが、これを最初は空欄または名前一覧など文字を入れる事は可能なのでしょうか? 単純にテキストファイルの一行目に名前一覧,といれても表示はされませんでした。 素人考えで申し訳ございませんが、アドバイスいただけますでしょうか。よろしくお願い致します。

その他の回答 (3)

  • tom11
  • ベストアンサー率53% (134/251)
回答No.4

>ロードした際のコンボボックスの表示がいきなり >名前になってしまいますが、 >これを最初は空欄または名前一覧など文字を入れる事は >可能なのでしょうか? ComboBox1.DataSource = ad 上記の下に下記を追加 ComboBox1.Text = "名前一覧" 順番を間違いえると名前一覧は、表示されません。

lobin_2008
質問者

お礼

ご回答ありがとうございます。 また、ここから頑張ってプログラムを組んでいこうと思います。 御丁寧にありがとうございました。

回答No.2

'PersonalInformationクラスを若干変更 Class PersonalInformation Private PersonName As String Private PersonAddress As String Private PersonPhoneNumber As String Sub New(info As String()) If info.Length <> 3 Then throw new System.ArgumentException End If '本当はここでValidateしたい Me.Name = info(0) Me.Address = info(1) Me.PhoneNumber = info(2) End Sub Public Overrides Function ToString() As String Return Me.Name() End Function Public Property Name() As String Get return PersonName End Get Set(s As String) PersonName = s End Set End Property Public Property Address() As String Get return PersonAddress End Get Set(s As String) PersonAddress = s End Set End Property Public Property PhoneNumber() As String Get return PersonPhoneNumber End Get Set(s As String) PersonPhoneNumber = s End Set End Property End Class

回答No.1

Option Strict On Option Compare Binary Option Infer Off 'デフォルトインスタンスが嫌いなため, 'コンソールアプリケーションとして作成したので '多分そのままコピペしても動作しないでしょう。 '参照設定としてSystem.Windows.Forms.Formも改めて加えなおさないといけないし。 'とは言え,ソースを順に眺めれば何やっているかぐらいはわかると思います。 '利用したテキストファイルは以下の通りUTF-8で書かれています。 'http://www.geocities.jp/tokusa5802/chara/teacher1.html 'を利用しました。 '土井半助,福原,0123-4567-7890 '山田伝蔵,氷ノ山,0246-8024-6802 Class Q4222779A Inherits System.Windows.Forms.Form Private ListBox1 As System.Windows.Forms.ListBox Sub New() Me.Width = 800 Me.Height = 600 ListBox1 = New System.Windows.Forms.ListBox() ListBox1.Width = 600 ListBox1.Height = 500 ListBox1.Left = 100 ListBox1.Top = 0 '面倒なので例外処理は一切省略。 Dim Reader As New System.IO.StreamReader(".\Q4222779-1.txt",System.Text.Encoding.GetEncoding(65001)) 'UTF-8 Do While Not Reader.EndOfStream Dim Data As String() '単純にカンマで行を区切っているだけなので 'CSVみたく,項目内に改行やカンマがあるケースは一切考慮していない Data = Reader.ReadLine().Split(","C) ListBox1.Items.Add(New PersonalInformation(Data)) Loop Me.Controls.AddRange(New System.Windows.Forms.Control(){ListBox1}) End Sub Shared Sub Main() Dim Form1 As Q4222779A Form1 = New Q4222779A() Form1.ShowDialog() End Sub End Class Class PersonalInformation Private PersonName As String Private PersonAddress As String Private PersonPhoneNumber As String Sub New(info As String()) If info.Length <> 3 Then throw new System.ArgumentException End If '本当はここでValidateしたい PersonName = info(0) PersonAddress = info(1) PersonPhoneNumber = info(2) End Sub Public Overrides Function ToString() As String Return PersonName End Function End Class

lobin_2008
質問者

お礼

早速の回答ありがとうございます。 なんとなくやってる事がわかるような気がするものの、まだまだ勉強不足だと痛感しました。 回答いただきました物を参考に、勉強しようと思います。