【问题标题】:Overwriting a saved setting in a CheckBox?覆盖复选框中保存的设置?
【发布时间】:2016-02-05 01:52:50
【问题描述】:

我有一个小型应用程序,它允许用户检查自定义数量的 CheckBox,然后将其保存到 ComboBox 以供以后选择。现在 ComboBox 接受重复项,我正在尝试删除它并允许用户覆盖他们自己保存的特定选择。每个用户选择的数据首先存储在一个名为 columnList 的 List(Of Tuple(Of String, List(Of String) 中,其中 item 1,在一个名为 name 的 String 中访问,是列表的名称,item 2 是列表。对于关闭程序后的访问,它也存储在一个文本文件中。我有一个粗略的方法,应该允许用户覆盖他们自己保存的选择,它会删除用户名所在位置的元素,然后将它与更新的选择一起插入到同一个地方。我还有一个 int 标志来告诉程序用户是否正在覆盖而不是创建新列表。

For i = 0 To columnList.Count - 1
            If columnList(i).Item1 = name Then
                columnList.RemoveAt(i)
                columnList.Insert(i, Tuple.Create(name, customList))
                flag = 1
                Exit For
            End If
        Next
        If flag = 0 Then
            columnList.Add(Tuple.Create(name, customList))
        End If

问题在于这并没有删除文本文件中的数据,而是将另一个具有重复名称的选择列表添加到文件中。所以它一直有效,直到您关闭应用程序,然后当它重新打开时,原始列表仍然显示在组合框中,新列表在底部的重复名称下。我想直接从应用程序中编辑存储文本文件。

【问题讨论】:

  • 由于this answer from Fabio 显然为您工作,也许您可​​以花点时间通过单击复选标记来接受该答案(也许还有您得到的其他一些答案)。这有助于其他人找到好的答案,就像 15 次代表的支持一样。
  • ColumnList(I).Item1 ->>> 那不是名字,那是一个整数。我相信你写的东西不会编译 - 所以我不确定你是如何让它运行的。使用 Nefariis 解决方案 - 简单的解决方案。
  • 完成!抱歉,我是 StackOverflow 的新手
  • @Maertin ColumnList 是一个元组列表,所以可以编译。

标签: vb.net checkbox combobox io tuples


【解决方案1】:

这个问题有点不清楚,所以如果我理解正确,请告诉我。

  1. 程序打开(工作)
  2. 用户数据/首选项从文本文件加载(作品)
  3. 用户更改偏好(有效)
  4. 用户退出程序
  5. 当用户重新加载程序时,旧数据和新数据都被加载(这是您要更改的)

如果是上述情况,那么您需要做的是覆盖文件而不是附加文件。

Dim sw As Streamwriter = New Streamwriter("C:\myFile.txt", False)

最后的 true 告诉文件覆盖而不是只写到底部。

如果这不是您要讨论的问题,您能否按上述格式编辑您的问题,以便我们查看您的问题到底在哪里?

【讨论】:

  • 是的,我可能需要覆盖整个文件,但我正在查看是否有更简单的方法。如果 Sally 在 ComboBox 中选择了 6 个值中的第 4 个值,更改了她选择的复选框列表中的两个内容并单击保存,我将不得不覆盖文本文件中每个人的列表,而不仅仅是她的。
  • 如果您打算使用文本文件,我会让每个用户创建自己的文件。然后将它们全部放在一个单独的文件夹中,该文件夹使用 for 循环加载所有扩展名为“.txt”的文件......如果有更多的用户,我实际上会为信息创建一个 SQL DB(不难VS)。
  • 在单个文本中执行此操作的唯一方法是读取整个文件,创建一个字符串生成器,然后在 SB 中逐行添加,直到到达您想要插入的位置或删除,读入文件的其余部分,然后将字符串生成器保存在原始文件上...。这将大大降低效率。
  • 你可能有“真实”的倒退。 StreamWriter 声明中的布尔属性称为 Append,如果您希望它附加到文件,我相信您将其设置为 true,否则设置为 false。
猜你喜欢
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 2017-02-11
  • 2011-02-21
  • 1970-01-01
  • 2011-09-06
相关资源
最近更新 更多