markleszczynski
asked on
Is it possible to save the text typed into a text box after shutting the program down without writing it to a file?
I have a textbox and a button. I'd like to use the button to "save" the textbox.text until it is changed. The textbox.text is an e-mail address or one line. Right now I type the e-mail address into the textbox hit save button and I make the textbox.visible = false and the button.visible = false. The program runs and does what it is suppose to. I shut the program down and next time I run it the textbox is cleared. Is there an easier way to save one line in a textbox without writing to a file and reading back every time the program runs?
In VS.NET 2005, you can use My.Settings which allows settings to be saved and loaded. I think it actually saves an XML file in user profiles, but this is all handled by the .NET framework and you don't need to manage the file directly from the code.
You can save into a registry key.
The settings option, saves to a file into user's appdata directory.
The settings option, saves to a file into user's appdata directory.
ASKER
I am trying to save the text entered into the txtaddress text box when I close the application. I tried to use My.settings in the txtaddress_TextChanged event. It doesn't like that. Not sure if that is even the right event to be saving the text. The code I used is below, doesn't work. Not sure what I'm doing wrong.
Private Sub txtaddress_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtaddress.TextChanged
My.Settings.Save(txtaddress)
End Sub
A simpler way to do the same:
Go to Design View
Open the Property Pages of the TextBox
If you have sorted the property view alphabetically the first Prperty will be "ApplicationSettings"
Expand it Click on thre "..." against "PropertyBindings"
From the Dialog that opens select the "Text" property in the Drop Down Click "New"
Give a Name to your setting say "EMail" here
Thats it.....
Go to Design View
Open the Property Pages of the TextBox
If you have sorted the property view alphabetically the first Prperty will be "ApplicationSettings"
Expand it Click on thre "..." against "PropertyBindings"
From the Dialog that opens select the "Text" property in the Drop Down Click "New"
Give a Name to your setting say "EMail" here
Thats it.....
And BTW if you want to do it in Code as you were trying earlier
Look at the code snippet
I have used the "Leave" event rather than "TextChanged" if it is important for your app you can go for TextChanged event as well
Look at the code snippet
I have used the "Leave" event rather than "TextChanged" if it is important for your app you can go for TextChanged event as well
Private Sub TextBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
My.Settings.Item("EMail") = TextBox1.Text
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = My.Settings.Item("EMail")
End Sub
ASKER
The above code does not work it crashes the program with a "settings property e-mail was not found"
I am trying to save the last text that was typed into txtAddress.text when then program closes, a variable. I also tried the "simpler way" in Design Mode. That lets me enter a default value. I need a variable. Do I need to declare EMail as a variable? the only changes i made to my application are the two lines in the code snippet regarding My.Settings.
I am trying to save the last text that was typed into txtAddress.text when then program closes, a variable. I also tried the "simpler way" in Design Mode. That lets me enter a default value. I need a variable. Do I need to declare EMail as a variable? the only changes i made to my application are the two lines in the code snippet regarding My.Settings.
Private Sub txtaddress_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtaddress.Leave
My.Settings.Item("EMail") = txtaddress.Text
End Sub
Private Sub Equipment_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
btnCloseEquipment.BackColor = Color.DarkSalmon
Me.BackColor = Color.LightCyan
txtaddress.Visible = False
btnSave.Visible = False
txtaddress.Text = My.Settings.Item("EMail")
End Sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
This code would be in the form load event?
If My.Settings.Properties.Ite
txtaddress.Text = My.Settings.Item("EMail")
End If
Yes
ASKER
I'm getting closer. I added the error checking code as advised above. It no longer crashes the program but the text still is not saved. Whatever text is in txtaddress is still not saved when I shut down the program. The next time I start the program txtaddres.text is blank. I attached the code I am using to "write" txtaddress.text and "read back" txtaddress.text.
write
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
txtaddress.Visible = False
btnSave.Visible = False
My.Settings.Item("EMail") = txtaddress.Text
My.Settings.Save()
Read back
Private Sub Equipment_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
btnCloseEquipment.BackColor = Color.DarkSalmon
Me.BackColor = Color.LightCyan
txtaddress.Visible = False
btnSave.Visible = False
If My.Settings.Properties.Item("EMail") IsNot Nothing Then
txtaddress.Text = My.Settings.Item("EMail")
End If
ASKER
Thanks for all the help. It is finally working. I had the Email property set to application it was read - only.
Soon as I set it to User it becam read/write.
Soon as I set it to User it becam read/write.