1

我有一个带有 10 个或更多按钮的简单表单。这些被命名为 Button1、Button2 等。我希望用户为文件夹中的每个按钮文本保存一个简单的 txt 文件。为什么?好吧,每个最终用户都希望下一个将使用该表单的用户为每个按钮使用不同的名称。每个用户都需要设置自己的文本描述以满足他的需要。(一旦设置)所以在一个文件夹位置我有...... Button1.txt、Button2.txt 等,每个都有一个默认的起始文本。在加载表单时,我想遍历 txt 文件并将用户编辑的名称添加到每个按钮。

我可以让它长期工作......一次做一个,但我知道我应该能够简单地循环......

我已经尝试了几种变化

For i = 1 To 10
  Dim FILE_NAME As String = "C:\QuickButtons\ButtonTxt\Button" & i & ".txt"
  If System.IO.File.Exists(FILE_NAME) = True Then
  Dim objReader As New System.IO.StreamReader(FILE_NAME)
  Me.Controls("Button" & i).Text = objReader.ReadToEnd
  objReader.Close()
Next

我不断收到“对象引用未设置为对象的实例”。

对于外面的人来说,这很容易……如果我有头发,我会把它拔出来!因此,我提前向您表示感谢。

4

2 回答 2

0

问题很可能在这里:

Me.Controls("Button" & i).Text = objReader.ReadToEnd

只有当按钮直接包含在表单中时,这才会成功。如果它们位于不同的容器中,例如 Panel,那么它将失败。

一种解决方案是像这样搜索控件:

    For i As Integer = 1 To 10
        Dim FILE_NAME As String = "C:\QuickButtons\ButtonTxt\Button" & i & ".txt"
        If System.IO.File.Exists(FILE_NAME) Then
            Dim matches() As Control = Me.Controls.Find("Button" & i, True)
            If matches.Length > 0 AndAlso TypeOf matches(0) Is Button Then
                Dim btn As Button = DirectCast(matches(0), Button)
                btn.Text = System.IO.File.ReadAllText(FILE_NAME)
            End If
        End If
    Next
于 2013-05-17T21:55:56.873 回答
0

更好的方法是拥有一个 XML 文件,您可以在其中拥有所有自定义标签。像这样的东西:

<labels>
  <button index="0" name="button1" />
  <button index="1" name="button2" />
  ...
</labels>

根据您的设计,这可能位于您app.config的 . 文件或独立文件中。

于 2013-05-17T20:07:43.193 回答