2013-05-27 62 views
0

我有兩個文本文件,分別包含每行(每行中的每個字)中的單個字和sObj.txt,每行中也包含單個字(但條目數更多這個文件比在sQue.txt中)。從文本文件中讀取並在表格加載中顯示

現在,我有,我想讀上面兩個文件&的方式顯示他們一個空白表單這樣的:

  1. 從sQue.txt文件中的每個條目被顯示在單獨的標籤中表格

  2. 將文件sObj.txt的所有條目放在CheckedListBox中&這個CheckedListBox對於上面第1點中顯示的每個標籤都會出現。

實施例:

sObj.txt contains 3 entries aaa, bbb & ccc (vertically i.e each in new line). sQue.txt contains 5 entries p,q,r,s & t (vertically i.e each in new line).

現在,當形式負載,3個標籤看出與文本AAA,BBB CCC &。另外3個CheckedListBoxes在每個盒子中看到包含p,q,r,s & t

可以這樣做嗎?我試圖找到一個沒有運氣的解決方案。

請幫忙。

到目前爲止我只有

Private Sub Form7_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Dim queue As String() = IO.File.ReadAllLines("C:\temp\sQue.txt") 
    Dim objects As String() = IO.File.ReadAllLines("C:\temp\sObj.txt") 

    For i = 0 To queue.Count - 1 
    'create labels here 
     For j=0 to objects.Count - 1 
     'create CheckedListBoxes 
     Next 
    Next 
End Sub 
+0

改爲使用單個XML文件。創建一個易於解析的格式(提前考慮潛在的用法)。它應該長期更好地工作。 – Neolisk

+1

可能的重複http://stackoverflow.com/questions/16776469/dynamic-reading-from-file-displaying-on-form-load順便說一句,這是你自己的問題。 – Neolisk

+0

你意識到你的例子與你在問題開始時的狀態完全相反嗎?你到底想要什麼? –

回答

1

如果使用組框,你可以使用文本屬性爲您的標籤,和checkedlistbox添加到組框中你想要的物品。此代碼將執行以下操作:

Imports System.IO 

Public Class Form1 

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
     Dim NewForm2 As New Form2 
     NewForm2.Show() 
     Dim sObj() As String = File.ReadAllLines("sobj.txt") 
     Dim sQue() As String = File.ReadAllLines("sQue.txt") 
     For Each s As String In sObj 
      Me.Controls.Add(MakeNewGB(s, sQue)) 
     Next 

    End Sub 
End Class 
Public Module Module1 
    Friend WithEvents NewGB As System.Windows.Forms.GroupBox 
    Friend WithEvents NewCLB As System.Windows.Forms.CheckedListBox 
    Public NextColumn As Integer = 0 
    Public Function MakeNewGB(lbl As String, clbItems() As String) As GroupBox 
     NewGB = New System.Windows.Forms.GroupBox() 
     NewCLB = New System.Windows.Forms.CheckedListBox() 
     NewGB.SuspendLayout() 
     'GroupBox1 
     ' 
     NewGB.Controls.Add(NewCLB) 
     NewGB.Location = New System.Drawing.Point(NextColumn, 0) 
     NewGB.Name = lbl 
     NewGB.Size = New System.Drawing.Size(126, 210) 
     NewGB.TabIndex = 0 
     NewGB.TabStop = False 
     NewGB.Text = lbl 
     ' 
     'CheckedListBox1 
     ' 
     NewCLB.FormattingEnabled = True 
     NewCLB.Location = New System.Drawing.Point(6, 19) 
     NewCLB.Name = "clb" + lbl 
     NewCLB.Size = New System.Drawing.Size(103, 184) 
     NewCLB.TabIndex = 0 
     NewCLB.Items.AddRange(clbItems) 
     NextColumn += NewGB.Size.Width + 10 
     Return NewGB 
    End Function 
End Module 
+0

你的代碼幾乎做我想要的只是問題是checkedlistbox項目與標籤項目切換,反之亦然。需要一個小調整和修復。非常感謝 ! – slyclam

+0

非常歡迎 – tinstaafl

+0

繼續閱讀您的文章,我還有一個要求。我有一個按鈕,點擊時應該保存發生的所有組框的NEWGB.Name以及該NEWGB的NEWCLB項目。 – slyclam

0

我覺得你的代碼應該是這樣的。但我不確定它的目的是什麼。

Private Sub Form7_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Dim queue As String() = IO.File.ReadAllLines("C:\temp\sQue.txt") 
    Dim objects As String() = IO.File.ReadAllLines("C:\temp\sObj.txt") 

    For i = 0 To queue.Count - 1 
    'create labels here 
     Dim label as new Label 
     label.Text = queue(i) 
     Dim chklst as new CheckedListBox 

     For j=0 to objects.Count - 1 
     'create CheckedListBoxes 
     chklst.Items.Add(object(j)) 
     Next 
     Me.Controls.Add(label) 
     Me.Controls.Add(chklst) 
    Next 
End Sub 
+0

您的代碼會創建一個標籤(sQue.txt中的第一個條目)和一個checkedlistbox(包含所有sObj.txt條目)。我使用上面的tinstaafl代碼得到了我想要的輸出。感謝您的幫助! – slyclam

相關問題