Vb.net 在文本文件中随机化行

Vb.net 在文本文件中随机化行,vb.net,Vb.net,我有一个文本文件,这是一个选择题和答案的形式。我想一次调用4行并在标签中输出这4个值。出于演示目的,每行都有一个单词,因此用户必须在选项1-4之间进行选择 红色的 蓝色的 绿色的 黄色的 然而,我想为3个标签随机选择4个值,但我的文件将有足够的值用于6个标签,这样每次用户加载程序时,它不会重复问题 是我的文本文件的样子 Public Class Form1 Dim rand As New Random Private Sub Form1_Load(sender As System.Object,

我有一个文本文件,这是一个选择题和答案的形式。我想一次调用4行并在标签中输出这4个值。出于演示目的,每行都有一个单词,因此用户必须在选项1-4之间进行选择

  • 红色的
  • 蓝色的
  • 绿色的
  • 黄色的
  • 然而,我想为3个标签随机选择4个值,但我的文件将有足够的值用于6个标签,这样每次用户加载程序时,它不会重复问题

    是我的文本文件的样子

    Public Class Form1
    Dim rand As New Random
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim QuestionFile As New IO.StreamReader(CurDir() & "\" & "Questions.txt")
        Dim fileContentsQ As String = QuestionFile.ReadToEnd
        Dim fileListQ As New List(Of String)
        For Each Str As String In fileContentsQ.Split(CChar(vbCrLf))
            fileListQ.Add(Str)
        Next
        Dim randItem As Integer = rand.Next(0, fileListQ.Count - 1)
        Label1.Text = (fileListQ.Item(randItem))
        fileListQ.RemoveAt(randItem)
        'removes item from list so that it isn't repeated
        Dim randItem2 As Integer = rand.Next(0, fileListQ.Count - 1)
        Label2.Text = (fileListQ.Item(randItem))
        fileListQ.RemoveAt(randItem)
        Dim randItem3 As Integer = rand.Next(0, fileListQ.Count - 1)
        Label3.Text = (fileListQ.Item(randItem))
        fileListQ.RemoveAt(randItem)
    End Sub
    
    末级

    问题是,当我希望每个标签一次显示4个单词时,每个标签只显示一个单词/行,例如
    Label1
    可能是(都在彼此下面):

    红色
    蓝色
    绿色
    黄色的

    试试这个:

    Dim lst As New List(Of String)(IO.File.ReadAllLines("Archivo.txt"))
    Dim nst As New List(Of String)
    Randomize()
    While lst.Count > 0
         Dim rdi As Integer = CInt(Math.Floor(Rnd() * lst.Count))
         nst.Add(lst(rdi))
         lst.RemoveAt(rdi)
    End While
    IO.File.WriteAllLines("Archivo.txt", nst.ToArray, Encoding.Unicode)
    

    希望有帮助。

    你需要更清楚地知道你想要什么-例如,标签不会显示bulletpoint。但是,您可能必须将集合粘合在一起,以便一次显示所有集合。解析后的列表将仅在表单加载中可用。如果有“下一步”按钮显示新问题,则必须再次读取并解析该文件。您应该在回答您的问题时使用代码,Blackwood先生将其作为表单的全局代码,以便重用。请注意在问题的上下文中解释代码。