Silverlight 3 – Open, Edit and Save a Text File to a Location outside the Isolated Storage
I see a lot of question on the forums asking how to edit text files kept on their machine and then save these files back to a desired location using Silverlight. In Silverlight 2, you had to use the Isolated Storage to save a file locally on the user’s machine. The SaveFileDialog is a new dialog control in Silverlight 3 which allows the user to specify a file name and location to save a file. This control can be invoked only through a user interaction. Let us a see a simple demonstration of using the OpenFileDialog and the SaveFileDialog control.
Create a simple user interface consisting of a TextBox and a Button. The user will first click on the Open button to open a local file and display the text in a TextBox control. After editing the text, the user will be presented the SaveFileDialog control where the user can specify the file name and location and persist the changes.
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
<TextBox Name="txt" Canvas.Left="20" Canvas.Top="50" Width="150" Height="200"
<Button Name="btnOpen" Canvas.Left="20" Canvas.Top="270" Click="btnOpen_Click" Content="Open" ></Button>
<Button Name="btnSave" Canvas.Left="60" Canvas.Top="270" Click="btnSave_Click" Content="Save" ></Button>
Let us first code the btnOpen_click event to read data from a text file and then display it in a textbox.
private void btnOpen_Click(object sender, RoutedEventArgs e)
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Text Files|*.txt";
ofd.FilterIndex = 1;
if (true == ofd.ShowDialog())
FileInfo info = ofd.File;
using (StreamReader sread = info.OpenText())
txt.Text = sread.ReadToEnd();
Private Sub btnOpen_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim ofd As New OpenFileDialog()
ofd.Filter = "Text Files|*.txt"
ofd.FilterIndex = 1
If True = ofd.ShowDialog() Then
Dim info As FileInfo = ofd.File
Using sread As StreamReader = info.OpenText()
txt.Text = sread.ReadToEnd()
When the user runs the application now and clicks on the Open button, an Open File dialog is presented to user that allows the user browse files on their system. The user can select a text file and click on Open. For demonstration purposes, let us open the Sample.txt file as shown below:
The ShowDialog() method returns true when ‘Open’ is clicked. The final step is to use the FileInfo.OpenText() to return a stream reader containing the text file contents.
The text gets displayed in the TextBox as shown below:
Once the user has edited the text in the textbox, we will persist the changes to Sample.txt. We will use the SaveFileDialog control for this purpose.
private void btnSave_Click(object sender, RoutedEventArgs e)
SaveFileDialog sfd = new SaveFileDialog();
sfd.DefaultExt = "txt";
sfd.Filter = "Text Files (*.txt)|*.txt";
sfd.FilterIndex = 1;
if (true == sfd.ShowDialog())
using (Stream stream = sfd.OpenFile())
byte tbyte = (new UTF8Encoding(true)).GetBytes(txt.Text);
stream.Write(tbyte, 0, tbyte.Length);
Private Sub btnSave_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim sfd As New SaveFileDialog()
sfd.DefaultExt = "txt"
sfd.Filter = "Text Files (*.txt)|*.txt"
sfd.FilterIndex = 1
If True = sfd.ShowDialog() Then
Using stream As Stream = sfd.OpenFile()
Dim tbyte() As Byte = (New UTF8Encoding(True)).GetBytes(txt.Text)
stream.Write(tbyte, 0, tbyte.Length)
In the code shown above, we are saving the file contents using a stream by calling the OpenFile() method.
After the user clicks on the Save button, the SaveFileDialog control is displayed.
All you have to do is select the existing Sample.txt file and click on Save. You can also save the file to a different file location with a different name. If you decide to overwrite the existing file, the user is prompted with the following message:
Clicking on yes overwrites the contents of the file with the contents of the textbox.
You can read more about the SaveFileDialog control over here. The entire source code of this article can be downloaded over here
If you liked the article, Subscribe to the RSS Feed or Subscribe Via Email.
This article has been editorially reviewed by Suprotim Agarwal.
C# and .NET have been around for a very long time, but their constant growth means there’s always more to learn.
We at DotNetCurry are very excited to announce The Absolutely Awesome Book on C# and .NET. This is a 500 pages concise technical eBook available in PDF, ePub (iPad), and Mobi (Kindle).
Organized around concepts, this Book aims to provide a concise, yet solid foundation in C# and .NET, covering C# 6.0, C# 7.0 and .NET Core, with chapters on the latest .NET Core 3.0, .NET Standard and C# 8.0 (final release) too. Use these concepts to deepen your existing knowledge of C# and .NET, to have a solid grasp of the latest in C# and .NET OR to crack your next .NET Interview.
Click here to Explore the Table of Contents or Download Sample Chapters!