Solved

Is it possible to save the text typed into a text box after shutting the program down without writing it to a file?

Posted on 2007-11-28
11
318 Views
Last Modified: 2010-04-23
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?
0
Comment
Question by:markleszczynski
11 Comments
 
LVL 7

Expert Comment

by:sj_hicks
ID: 20370974
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.
0
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 20370990
You can save into a registry key.
The settings option, saves to a file into user's appdata directory.
0
 

Author Comment

by:markleszczynski
ID: 20371297
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

Open in new window

0
 
LVL 19

Expert Comment

by:arif_eqbal
ID: 20372622
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.....
0
 
LVL 19

Expert Comment

by:arif_eqbal
ID: 20372654
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

 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

Open in new window

0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:markleszczynski
ID: 20378805
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.
 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

Open in new window

0
 
LVL 19

Accepted Solution

by:
arif_eqbal earned 250 total points
ID: 20380129
I am sorry, you shoudl be doing this Error Checking, I forgot to add that.
Why this happens is, when you run it for the first time, you do not have the Property Setting by the name "EMail" and you are trying to use it, so the Error
All you need is check if this "EMail" setting is available or not

If My.Settings.Properties.Item("EMail") IsNot Nothing Then
txtaddress.Text = My.Settings.Item("EMail")
End If
0
 

Author Comment

by:markleszczynski
ID: 20380138

This code would be in the form load event?
If My.Settings.Properties.Item("EMail") IsNot Nothing Then
txtaddress.Text = My.Settings.Item("EMail")
End If
0
 
LVL 19

Expert Comment

by:arif_eqbal
ID: 20380174
Yes
0
 

Author Comment

by:markleszczynski
ID: 20386682
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

Open in new window

0
 

Author Comment

by:markleszczynski
ID: 20386758
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.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Spacing between controls 4 30
vb.net 2 37
Web Form VB.Net  import CSV 4 24
Run a batch file when a Crystal Report is opened 5 14
Well, all of us have seen the multiple EXCEL.EXE's in task manager that won't die even if you call the .close, .dispose methods. Try this method to kill any excels in memory. You can copy the kill function to create a check function and replace the …
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now