为什么当我关闭程序并重新加载它时,我的所有用户输入的按钮名称都消失了?

时间:2012-07-28 01:56:53

标签: vb.net button user-input

我再次嗨,在我最后两个问题后,我遇到了另一个问题。 Buttons to be renamed by the userInput a button's text into a text box

当label4为admin时,当你点击按钮时会出现一个输入框询问按钮名称,如果label4是其他任何内容,那么它会将按钮的文本添加到不同的框中。

这一切都很正常我遇到的问题是,当我关闭程序然后重新打开它时,所有按钮文本都被删除了。

所以简而言之,我要问的是如何将它保存到按钮中,这样如果我关闭程序并重新打开它,文本就会保留在所有按钮上。

我对该按钮的代码是。

Dim Button As Button = DirectCast(sender, Button)

If Label4.Text = "Admin" Then
    With DirectCast(sender, Button)
        .Text = InputBox("Button Name", "Button Name", .Text)
    End With
Else
    Me.TransactionBindingSource.AddNew()
    Product_NameTextBox.Text = Button.Text

    Try
        Me.ProductTableAdapter.FillByProductName(Me.Database1DataSet.Product, Product_NameTextBox.Text)
    Catch ex As System.Exception
        System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try

    ProductTextBox.Text = Button.Text
    GroupTextBox.Text = GroupTextBox1.Text
    AmountTextBox.Text = AmountTextBox1.Text
    PriceTextBox.Text = PriceTextBox1.Text
    TimeTextBox.Text = TimeOfDay
    DateTextBox.Text = DateString

    Me.Validate()

    Me.TransactionBindingSource.EndEdit()
    Me.TransactionTableAdapter.Update(Me.Database1DataSet)
    Timer2.Enabled = True
    TransNameLB.Items.Add(Button.Text)
    TransPriceLB.Items.Add(PriceTextBox.Text)

    Dim sum As Double
    For x As Integer = 0 To TransPriceLB.Items.Count - 1
        sum += Val(TransPriceLB.Items.Item(x).ToString)
    Next

    TextBox1.Text = sum.ToString
    QTYDrinksTB.Text = TransNameLB.Items.Count
End If

提前感谢您提供的任何帮助

克雷格

2 个答案:

答案 0 :(得分:2)

除了Mark Hall所说的(优秀的答案!),VB可以为您自动完成所有操作。您必须设置与应用程序设置的绑定。

  1. 转到按钮的属性标签
  2. 展开(ApplicationSettings)属性
  3. 单击“文本”区域。将出现一个下拉列表,选择新建
  4. 在弹出的对话框中,为其命名并确保范围 是用户
  5. 现在,该应用会自动记住您设置的文字,并在应用启动时重新加载

    enter image description here

答案 1 :(得分:1)

由于您使用的是Vb.net,因此可以使用My.Settings对象保留用户设置的方法之一。这是一个简单的例子,但应该给你一个想法。

首先,我通过右键单击项目并转到Project Propertys设置选项卡,创建了一个与Buttons Name同名的设置。

enter image description here

然后我将它保存在这样的Button Click事件中。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim btn As Button = DirectCast(sender, Button)

    With DirectCast(sender, Button)
        .Text = InputBox("Button Name", "Button Name", .Text)
        My.MySettings.Default.Item(Button1.Name) = .Text
        My.MySettings.Default.Save()
    End With
End Sub

下一步是遍历Forms Control Collection中的所有控件,找到要将保存的文本放入的按钮。

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    For Each cntrl As Control In Me.Controls
        If TypeOf cntrl Is Button Then
            If Not String.IsNullOrEmpty(My.MySettings.Default.Item(cntrl.Name).ToString) Then 'Check to make sure there is Data there
                cntrl.Text = My.MySettings.Default.Item(cntrl.Name).ToString
            End If
        End If
    Next
End Sub

或者您也可以明确使用按钮名称。

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

    If Not String.IsNullOrEmpty(My.MySettings.Default.Item(Button1.Name).ToString) Then
        Button1.Text = My.MySettings.Default.Item(Button1.Name).ToString
    End If

End Sub