我再次嗨,在我最后两个问题后,我遇到了另一个问题。 Buttons to be renamed by the user和Input 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
提前感谢您提供的任何帮助
克雷格
答案 0 :(得分:2)
除了Mark Hall所说的(优秀的答案!),VB可以为您自动完成所有操作。您必须设置与应用程序设置的绑定。
现在,该应用会自动记住您设置的文字,并在应用启动时重新加载
答案 1 :(得分:1)
由于您使用的是Vb.net,因此可以使用My.Settings对象保留用户设置的方法之一。这是一个简单的例子,但应该给你一个想法。
首先,我通过右键单击项目并转到Project Propertys设置选项卡,创建了一个与Buttons Name同名的设置。
然后我将它保存在这样的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