2016-11-29 10 views
0

これは私が行う必要がある、私はopenfileボタンをクリックし、openfileダイアログボックスを表示します。私はテキストファイルを開き、それはIDボックス番号のためにそのファイルを検索し、IDbox.textフィールドに表示したいと同時に、informationbox.textフィールドに表示されます。 他のフォーラムを検索しましたが、の方法や他の方法についてはわかりません。あまりにも混乱します。ID番号を検索するTextFile vb.net

これは私がこれまで持っているものである - テキストファイルの

Private Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpenToolStripMenuItem.Click 
    Dim oReader As StreamReader 
    OpenFileDialog1.CheckFileExists = True 
    OpenFileDialog1.CheckPathExists = True 
    OpenFileDialog1.DefaultExt = "txt" 
    OpenFileDialog1.FileName = "" 
    OpenFileDialog1.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*" 
    OpenFileDialog1.Multiselect = False 
    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then 
     oReader = New StreamReader(OpenFileDialog1.FileName, True) 
     InformationBox.Text = oReader.ReadToEnd 
     My.Forms.Home.TextBox5.AppendText(Environment.NewLine & "Opened Customer : " & OpenFileDialog1.FileName & " File") 
     oReader.Close() 
    End If 
    IDBox.Text = "" 
    Label11.Text = OpenFileDialog1.FileName 
End Sub 

例:顧客の

名:顧客の

姓を名:姓

ID番号:12345678910

レコード番号:001

お客様の住所:住所

お気軽にお問い合わせください。

+2

このようなテキストファイルの例を示してください。 IDはどのようにファイルに正確に格納されていますか? –

+0

質問に追加しました –

答えて

0

サンプルコードでは、StreamReaderを使用してテキストファイルを読み取ります。

Streamsの「欠点」は、手動で処分を管理する必要があることです。
例では、oReader.ReadToEndにエラーが発生した場合、oReader.Closeという行はヒットせず、ストリームは未配置のままであり、問​​題を引き起こす可能性があります。
Usingスコープであなたのストリームをよりよく格納するでしょう(別のオプションはstatic System.IO.File.ReadAllLines|ReadAllTextメソッドを使用することです)。

Private Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpenToolStripMenuItem.Click 
    'Dim oReader As StreamReader <-- DELETE THIS 
    OpenFileDialog1.CheckFileExists = True 
    OpenFileDialog1.CheckPathExists = True 
    OpenFileDialog1.DefaultExt = "txt" 
    OpenFileDialog1.FileName = "" 
    OpenFileDialog1.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*" 
    OpenFileDialog1.Multiselect = False 
    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then 
     'MY CODE STARTS HERE: 
     Dim customerInfo As String 
     Using sr = New StreamReader(OpenFileDialog1.FileName, True) 
      customerInfo = sr.ReadToEnd() 
     End Using 'Close the stream early since we have all data needed 

    'Write all lines into a string array 
     Dim lines As String() = customerInfo.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries) 
    'Get the line where the ID Number is in 
     Dim idLine As String = lines.Where(Function(l) l.StartsWith("ID number")).FirstOrDefault() 
     Dim id As String = String.Empty 
     If Not String.IsNullOrEmpty(idLine) Then 
     Dim aIdLine() = idLine.Split(":"c) 'Split the ID line by : 
     If aIdLine.Length >= 1 Then 
      id = aIdLine(1) 'This should be the actual ID 
     End If 
     End If 

    'Set UI 
    My.Forms.Home.TextBox5.AppendText(Environment.NewLine & "Opened Customer : " & OpenFileDialog1.FileName & " File") 
    InformationBox.Text = customerInfo 
    IDBox.Text = id 
    Label11.Text = OpenFileDialog1.FileName 
End If 
+0

私はあなたのコードをコピーし、私はそれを試した、IDBox.textフィールドで何も起こりません。 informationbox.textフィールドにはテキストが入力されていますが、これは問題ありません。エラーはありませんでした –

+0

テストしているテキストファイルを[アップロード](http://textuploader.com/)できますか?それが私のために働いて以来、私とあなたの間に不一致があるかもしれません。その間に:私のコードをデバッグし、 'If Not String.IsNullOrEmpty(idLine)Then'がtrueかfalseであることを確認してください。 trueの場合は 'If aIdLine.Length> = 1 Then'もtrueまたはfalseにチェックします。 –

+0

txtファイルをアップロードするにはどうすればよいですか?例えば、 –