【问题标题】:when I reopen it it doesn't store the value of Label5 and TextBox1. In TextBox1 i want to show, after reopen, the zero value当我重新打开它时,它不会存储 Label5 和 TextBox1 的值。在 TextBox1 中,我想在重新打开后显示零值
【发布时间】:2021-04-15 14:19:24
【问题描述】:

我在 Visual Basic 中有以下情况。 5个标签,4个文本框和2个按钮,根据图片。文本框 1 + 文本框 2 + 文本框 3 = 文本框 4 和标签 4 = 文本框 4。 Button1 表示 (TextBox1 + Textbox2 + TextBox3) 处的 TOTAL。 Button2,代表保存。我希望 Label5 在按下 SAVE 按钮后向我显示 TextBox1 中的值并进行保存。这是使用的代码。显然应用程序可以工作,但是当我重新打开它时,它不会存储 Label5 和 TextBox1 的值。在 TextBox1 中,我想在重新打开后显示零值。请帮帮我!

这是密码

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim t1 As Integer
        Dim t2 As Integer
        Dim t3 As Integer
        Dim t4 As Integer
        Dim total1 As Integer

        If Integer.TryParse(TextBox1.Text, t1) AndAlso Integer.TryParse(TextBox2.Text, t2) AndAlso Integer.TryParse(TextBox3.Text, t3) AndAlso Integer.TryParse(TextBox4.Text, t4) Then

            total1 = t1 + t2 + t3 + t4
        Else
            MessageBox.Show("Introduceti 1 sau 0. Ati introdus o litera")
            Exit Sub
        End If
        TextBox4.Text = total1.ToString

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


        Label5.Text = TextBox1.Text
        My.Settings.QQQ = Label5.Text
        My.Settings.QQQ = TextBox1.Text
        My.Settings.Save()




        Label4.Text = TextBox4.Text
        My.Settings.QQQ = Label4.Text
        My.Settings.QQQ = TextBox4.Text
        My.Settings.Save()

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        TextBox1.Text = My.Settings.QQQ
        Label5.Text = My.Settings.QQQ





        TextBox4.Text = My.Settings.QQQ
        Label4.Text = My.Settings.QQQ


        If TextBox4.Text = " " Then
            Button1.Enabled = False
        Else
            Button1.Enabled = True
        End If
    End Sub

    Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.TextChanged









        If TextBox4.Text = " " Then
            Button1.Enabled = False
        Else
            Button1.Enabled = True
        End If
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        If TextBox1.Text = " " Then
            Button1.Enabled = False
        Else
            Button1.Enabled = True
        End If



    End Sub
End Class

【问题讨论】:

  • 你的错误太明显了,你把所有的价值都存进我的。环境。 QQQQ。这意味着 textbox1 之前保存的值被 textbox 4 的值覆盖。
  • 感谢您的建议,但我是初学者,对此了解不多。如果你能告诉我更多细节,请告诉我。感谢您的宝贵时间!
  • TextBox1=Label5 和 TextBox4=Label4
  • 要么将数据存入数据库,要么存入XML等外部文件。如果存入程序设置,则不会被保存。当程序关闭时,您将丢失信息。那么告诉我你想如何保存数据?
  • 谢谢。但它不起作用。你知道我如何上传一张图片来更好地解释吗? – f

标签: vb.net


【解决方案1】:

首先,确保您的设置 QQQ 的范围是用户而不是应用程序,以便可以对其进行更新。类型应该是字符串。

在 Button2.Click 中,您将标签和文本框设置为显示相同的内容。然后将设置设置为等于标签文本。接下来,您使用文本框值覆盖设置。这没有意义。它们是相同的值。

然后你再覆盖它 2 次。只有最后一次分配给设置,My.Settings.QQQ = TextBox4.Text 将被保留在方法结束时。

附带说明一下,在 TextChanged 事件中,您真的指的是空格字符吗? " "我想你可能想要空字符串""

完全摆脱 TextBox4 并使用 Label4 来保存总数。您不希望用户能够直接更改总数。

Label5 在做什么?看起来没有必要。

用户设置在会话之间保持不变。在项目属性中设置用户设置时,它会存储在项目文件夹中的 app.config 中。

<userSettings>
    <TestCode3.My.MySettings>           
        <setting name="QQQ" serializeAs="String">
            <value />
        </setting>
    </TestCode3.My.MySettings>
</userSettings>

实际值保存到 user.config

C:\Users{username}\AppData{ApplicationName}\ 继续向下钻取,直到到达 user.config

这只是背景信息。您不直接与这些文件进行交互。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    TextBox1.Text = "0"
    Label4.Text = My.Settings.QQQ
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim t1, t2, t3, t4 As Integer
    Dim total1 As Integer
    If Integer.TryParse(TextBox1.Text, t1) AndAlso Integer.TryParse(TextBox2.Text, t2) AndAlso Integer.TryParse(TextBox3.Text, t3) AndAlso Integer.TryParse(TextBox4.Text, t4) Then
        total1 = t1 + t2 + t3 + t4
    Else
        MessageBox.Show("Introduceti 1 sau 0. Ati introdus o litera")
        Exit Sub
    End If
    Label4.Text = total1.ToString
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    My.Settings.QQQ = Label4.Text
    My.Settings.Save()
End Sub

我认为您的主要问题是覆盖您创建的单个设置。

【讨论】:

  • 谢谢。但它不起作用。你知道我怎样才能上传一张图片来更好地解释吗?
  • @foXinTHEboX67 什么不起作用?为我工作。
  • 这是应用程序的照片。感谢您的宝贵时间!
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 2021-10-05
  • 2017-02-25
  • 1970-01-01
相关资源
最近更新 更多