使用if语句将项目从vb中的结构文件添加到列表框?

Posted

技术标签:

【中文标题】使用if语句将项目从vb中的结构文件添加到列表框?【英文标题】:Adding items to listbox from a struture file in vb with an if statement? 【发布时间】:2015-12-12 16:08:50 【问题描述】:

PS:我有visual studio 2012版

嘿,我有一个文件,我根据用户以单独的形式提供给我的信息将结构“personne”保存在 .txt 文件中,现在我需要搜索最终包含几个人信息的文件(姓名,最后姓名、性别、城市等)适用于男性。

目标是有一个列表框显示文件中所有男性的姓名和姓氏

当我删除“if p.sexe ="homme"” 部分时,代码运行良好,但随后它会列出表单中所有人的姓名,而不仅仅是男性。 当我保持条件并且发生不明错误时,Visual Studio 甚至没有告诉我它是什么。它只是冻结,直到我关闭应用程序。

我对 vb 比较陌生,不明白这个问题。有什么建议吗?

Public Class Form4
Private Sub cmdAfFiltre_Click(sender As Object, e As EventArgs) Handles cmdAfFiltre.Click
    Dim a, i As Integer
    a = FreeFile()
    Dim p As Personne, L As Long
    Dim path As String
    path = "d:\miniprojet.txt"
    L = Len(p)
    FileOpen(a, path, OpenMode.Random, , , L)
    i = 0
    While Not EOF(a)

        FileGet(a, p, i + 1)
        If rdnHomme.Checked Then
           'the goal is to only add to the list when the "person"'s sexe is male 
           'homme means man
        If p.sexe = homme Then

                lstPersonne.Items.Add(p.nom & p.prenom)
                i = i + 1
            End If
        End If
    End While
    FileClose(a)
End Sub

【问题讨论】:

摆脱那些遗留的 VB 文件功能并使用 NET 版本会好得多。您可以用 2-3 行序列化整个 List(of Person) 并读回整个列表,而不是将该文件用作随机访问。然后只需管理底层列表。 Example Binary Serialization 【参考方案1】:
 If p.sexe = homme Then
    lstPersonne.Items.Add(p.nom & p.prenom)
    i = i + 1
 End If

应该是

 If p.sexe = "homme" Then
    lstPersonne.Items.Add(p.nom & p.prenom)
    i = i + 1
 End If

我同意其他 cmets,您应该远离随机文件访问并使用 https://support.microsoft.com/en-us/kb/316730 之类的东西

【讨论】:

以上是关于使用if语句将项目从vb中的结构文件添加到列表框?的主要内容,如果未能解决你的问题,请参考以下文章

从DblClick上的列表框导航到所选项目(excel)

在列表框项目之间添加文本

VB中列表框List赋值并在文本框输出

如何从两个列表框保存文件c#

将项目从不同的类添加到列表框

vb中图片框如何清除里面的所有内容?