none
テキストファイルからcomboboxに読み込み?&ラベルに出力 RRS feed

  • 質問

  • こんばんは

    VB2008です

    フォーム1にcombobox1とボタン1(検索)、ボタン2(登録)があります。

    登録ボタンでフォーム3を開きます。

    テキストボックスが数個ありデータを入力します。

    入力が終わるとVBTest.txtに","区切りで追加書き込みをします。(品番,型番,材料,***,****,****,・・・・)

    わからないのは

    フォーム1をloadした時に、VBTest.txtを読み込みcombobox1に品番を表示させて

    comboboxを選択し検索ボタンをおすとフォーム2の各ラベルに表示させたいのですが

    Dim Reader As New IO.StreamReader("C:\VBTest.txt")

    でファイルを読み込むのがわかったのですが1行を分解して配列にいれるのがわかりません

    2008年11月19日 15:01

回答

  •  akisan さんからの引用

    こんばんは

    VB2008です

    フォーム1にcombobox1とボタン1(検索)、ボタン2(登録)があります。

    登録ボタンでフォーム3を開きます。

    テキストボックスが数個ありデータを入力します。

    入力が終わるとVBTest.txtに","区切りで追加書き込みをします。(品番,型番,材料,***,****,****,・・・・)

    わからないのは

    フォーム1をloadした時に、VBTest.txtを読み込みcombobox1に品番を表示させて

    comboboxを選択し検索ボタンをおすとフォーム2の各ラベルに表示させたいのですが

    Dim Reader As New IO.StreamReader("C:\VBTest.txt")

    でファイルを読み込むのがわかったのですが1行を分解して配列にいれるのがわかりません

     

    Split関数かStringクラスのSplitメソッドが使えます。

    サンプルとしては、以下のようになります。

    Code Snippet

         Dim Reader As New IO.StreamReader("C:\VBTest.txt")

         Dim wk_str As String

         wk_str = Reader.ReadLine

         Dim tbl() As String
         tbl = wk_str.Split(",")     ' StringクラスのSplitメソッドを使った場合。
         'tbl = Split(wk_str, ",")   ' Split関数を使った場合

     

    また、分割された件数について、上記の例であれば以下のコードで取得できます。

    Code Snippet
         tbl.Count()
     
    2008年11月19日 18:52

すべての返信

  •  akisan さんからの引用

    こんばんは

    VB2008です

    フォーム1にcombobox1とボタン1(検索)、ボタン2(登録)があります。

    登録ボタンでフォーム3を開きます。

    テキストボックスが数個ありデータを入力します。

    入力が終わるとVBTest.txtに","区切りで追加書き込みをします。(品番,型番,材料,***,****,****,・・・・)

    わからないのは

    フォーム1をloadした時に、VBTest.txtを読み込みcombobox1に品番を表示させて

    comboboxを選択し検索ボタンをおすとフォーム2の各ラベルに表示させたいのですが

    Dim Reader As New IO.StreamReader("C:\VBTest.txt")

    でファイルを読み込むのがわかったのですが1行を分解して配列にいれるのがわかりません

     

    Split関数かStringクラスのSplitメソッドが使えます。

    サンプルとしては、以下のようになります。

    Code Snippet

         Dim Reader As New IO.StreamReader("C:\VBTest.txt")

         Dim wk_str As String

         wk_str = Reader.ReadLine

         Dim tbl() As String
         tbl = wk_str.Split(",")     ' StringクラスのSplitメソッドを使った場合。
         'tbl = Split(wk_str, ",")   ' Split関数を使った場合

     

    また、分割された件数について、上記の例であれば以下のコードで取得できます。

    Code Snippet
         tbl.Count()
     
    2008年11月19日 18:52
  • こんにちは

    combobox1に値をいれたいのですが

    ComboBox1.Items.Add=tb1.count()

    ですか?

    これだと

    「エラー 1 'Public Function Add(item As Object) As Integer' のパラメータ 'item' に対して引数が指定されていません。」

    とエラーがでます

    すみません初歩的かとおもいますが

    2008年11月20日 0:14
  • MSDNライブラリはご存じでしょうか? ご存じなければ、まずここで調べることを覚えて下さい。どんなに上級者になっても、ここを見なくなることはまずありません。

     

    ComboBox.ObjectCollection.Add メソッド
    http://msdn.microsoft.com/ja-jp/library/system.windows.forms.combobox.objectcollection.add(VS.80).aspx

     

    エラーの意味は、Add(item As Object)というメソッドがあり、このitemという引数に何も与えていないということです。

    2008年11月20日 0:44
    モデレータ
  • こんにちは

    前回→Handles MyBase.Loadの記載を何かの拍子に削除したみたいでエラーでした。

    一応下記でcomboboxには品番を表示することができたのですが

    comboboxを選択してその対のデータをフォーム2のラベルに表示したいのですがどうすればいいですか?

     

     

    Private Items() As String
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Reader As New IO.StreamReader("C:\VBTest.txt")
            Dim Line As String = Reader.ReadLine
            Dim tb As String
            Do Until IsNothing(Line)
                Items = Line.Split(",")                   '一行を, (カンマ)で区切って項目ごとに分解
                tb = Items(0)
                ComboBox1.Items.Add(tb)
                Line = Reader.ReadLine
            Loop

        End Sub

    2008年11月20日 3:53
  • 外池と申します。えっとですね、この手の質問は、芋づる式に延々続いてしまって、プログラムの完成までに非常に時間がかかってしまうと思います。

     

    ですので、まずは、ご自分でドキュメントを調べてください。

     

    で、基本的なことですが、Formの概観(色やら大きさ、あと、ラベルに何を表示するか、アイコンに何を表示するか)の多くの設定は「プロパティー」を設定する(プロパティーに値を代入する)ことでお好きなように変えられます。

     

    ドキュメントでFormクラスについて調べてみてください。ちなみに、ラベルと仰っているものは、FormのTextプロパティーのことだと思います。

     

    2008年11月20日 4:00
  •  akisan さんからの引用

    comboboxを選択してその対のデータをフォーム2のラベルに表示したいのですがどうすればいいですか?

     

    質問の範囲が大きすぎて、それへの回答も大きくなってしまいます。そこで、まず解決しなければならない要件を整理し、一つずつ挑戦してみて下さい。

     

    ・ComboBoxで選択されている値をどうやって取得するのか?

    ・フォーム2をどうやって開くのか?

    ・ComboBoxのあるフォーム1からLabelのあるフォーム2へどうやってComboBoxで選択されている値を渡すのか?

    2008年11月20日 4:50
    モデレータ
  • こんにちは

    以下でできました。

    そんなに難しくなかったですね

    すみません

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim frm2 As Form2 = Form2
            Dim Reader As New IO.StreamReader("C:\VBTest.txt")
            Dim Line As String = Reader.ReadLine
            Dim PCode As String
            Form2.Text = ComboBox1.SelectedIndex
            frm2.Show()


            Do Until IsNothing(Line)
                Items = Line.Split(",")
                PCode = Items(0)
                If PCode = ComboBox1.SelectedItem Then
                    frm2.Label12.Text = Items(0)
                    frm2.Label13.Text = Items(1)
                    frm2.Label14.Text = Items(2)
                    frm2.Label15.Text = Items(3)
                    frm2.Label16.Text = Items(4)
                    frm2.Label17.Text = Items(5)
                    frm2.Label18.Text = Items(6)
                    frm2.Label19.Text = Items(7)
                    frm2.Label20.Text = Items(8)
                    frm2.Label21.Text = Items(9)
                    frm2.Label22.Text = Items(10)
                    frm2.TextBox1.Text = Items(11)
                    frm2.PictureBox1.Image = Image.FromFile("C:\Documents and Settings\....\My Documents\My Pictures\080125_0919~01.jpg")


                    Exit Sub
                End If '一行を, (カンマ)で区切って項目ごとに分解

                Line = Reader.ReadLine
            Loop
            Reader.Close()

           
        End Sub

    ただ、画像表示しようとしたらwindowsのusernameが必要みたいなので今度はその辺調べます。

    ありがとう

    2008年11月21日 0:37