Save Image to particular folder from Openfiledialog? - c#

I want to save images to my project folder from openfiledialog result . I don't get foler path to save . How do I get folder path ? How do I save that ? Please Help me.

FileDialog.FileName gives the full path to the file. And btw it is probably easier to use the SaveFileDialog because you want to save something, not open.

Hello thinzar,
private void button2_Click(object sender, EventArgs e)
{
Bitmap myBitmap = new Bitmap();
this.saveFileDialog1.FileName = Application.ExecutablePath;
if (this.saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
myBitmap.Save(this.saveFileDialog1.FileName);
}
}
Bye

The System.Windows.Forms.FolderBrowserDialog allows the user to select a folder. Maybe that would be a better option?

Something alone these lines
Bitmap myImage = new Bitmap();
// draw on the image
SaveFileDialog sfd = new SaveFileDialog ();
if(sfd.ShowDialog() == DialogResult.OK)
{
myImage.Save(sfd.FileName);
}

I guess you're opening a file elsewhere and then using the results to later save stuff into the directory you opened from?
DialogResult result = OpenFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
string directoryName = Path.GetDirectoryName(OpenFileDialog1.FileName);
// directoryName now contains the path
}

Related

C# OpenFileDialog importing variable

Still new to C#, snipping some code around to write a simple application and learning while doing.
I have an xml file that needs to be ingested and set as a variable so I can have it just insert words from that text file into different text fields.
private void button1_Click(object sender, EventArgs e)
{
// Displays an OpenFileDialog so the user can select a datafeed.
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "Datafeed File|*.dfx5";
openFileDialog1.Title = "Select a dfx5";
// Show the Dialog.
// If the user clicked OK in the dialog and
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// Assign the file as a variable.
}
}
How would I make that file a variable so that I can read from it?
Thank you in advanced. Google-ing didn't return anything helpful
How would I make that file a variable so that I can read from it?
Well, the file name that was selected is a property of the OpenFileDialog object:
string fileName;
// Show the Dialog.
// If the user clicked OK in the dialog and
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// Assign the file as a variable.
fileName = openFileDialog1.FileName;
}
What you do with that file name at that point is up to you.
If you want to store the Filename in a variable, the other answers are what you are looking for.
To me it sounds like you need to actually read the content of the file.
If that's what you want, the following snippet (provided by Microsoft) should do:
try
{ // Open the text file using a stream reader.
using (StreamReader sr = new StreamReader(openFileDialog1.FileName))
{
// Read the stream to a string, and write the string to the console.
String line = sr.ReadToEnd();
Console.WriteLine(line);
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
This way line will contain the XML data you need. How you proceed from there is up to you.
If the file is pure XML, then I'd be inclined to do something like this:
using System.Xml.Linq;
private XDocument _xmlPayload;
private void button1_Click(object sender, EventArgs e)
{
// Displays an OpenFileDialog so the user can select a datafeed.
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "Datafeed File|*.dfx5";
openFileDialog1.Title = "Select a dfx5";
// Show the Dialog.
// If the user clicked OK in the dialog and
var dialogResult = openFileDialog1.ShowDialog();
if (dialogResult == System.Windows.Forms.DialogResult.OK)
{
//Get file path from dialog
var filePath = openFileDialog1.FileName;
//load xml
using(var stream = File.OpenRead(filePath))
{
_xmlPayload = XDocument.Load(stream);
}
}
}
Then it's up to you how you work with the XML.
openFileDialog1.FileName should have the returned filename from the dialog. if multiselect is enabled I think its openFileDialog1.FileNames

Saving files with name read from text box. C#

I have created some code that saves my work to a text file, I was just wondering is there some way so that when I click 'Save' I can read in the text from richTextBox1and set it as the default file name, still with the 'txt' default file extension.
e.g. When I click 'save' the folder dialog comes up and asks you to name your file, just as it would if you were using Word for example, I want that box to already have the text from my richTextBox1 in.
Thanks.
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog save = new SaveFileDialog();
save.InitialDirectory = "C:\\To-Do-List";
save.Filter = "Text Files (*.txt)|*.txt";
save.DefaultExt = ".txt";
DialogResult result = save.ShowDialog();
if (result == DialogResult.OK)
{
using (StreamWriter SW = new StreamWriter(save.FileName))
{
SW.WriteLine(richTextBox1.Text);
SW.WriteLine(richTextBox2.Text);
SW.WriteLine(richTextBox3.Text);
SW.WriteLine(richTextBox4.Text);
SW.WriteLine(richTextBox5.Text);
SW.Close();
}
}
Just set the FileName property on your SaveFileDialog.
Add
save.FileName = String.Format("{0}.txt", richTextBox1.Text);
Before you call ShowDialog.

openfile dialog cancel crash

I am making a basic word processor in c# for training. Now I am making the open file part of it. I can open a text file without issue. But when I open the open file dialog and then cancel it, it crashes :/
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
var OpenFile = new System.IO.StreamReader(openFileDialog1.FileName);
getRichTextBox().Text = OpenFile.ReadToEnd();
}
I know it is because the streamreader has nothing to read but I am not sure how to solve this.
thanks in advance!
Edit: Thank you! it worked perfectly :)
You need to check the result of the dialog:
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK) {
using (var openFile = new StreamReader(openFileDialog1.FileName)) {
getRichTextBox().Text = OpenFile.ReadToEnd();
}
}
}
I've also added a using statement to ensure that your file is closed when you're done reading it.
You can simplify the code even further by simply using File.ReadAllText instead of messing around with StreamReader.
getRichTextBox().Text = File.ReadAllText(openFileDialog1.FileName);
(Thanks #keyboardP)
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
var OpenFile = new System.IO.StreamReader(openFileDialog1.FileName);
getRichTextBox().Text = OpenFile.ReadToEnd();
}

c# Openfiledialog

When I open a file using this code
if (ofd.ShowDialog() == DialogResult.OK)
text = File.ReadAllText(ofd.FileName, Encoding.Default);
A window appear and ask me to choose file (The File Name is blank as you can see on the image)
If I press second time the button Open to open a file the File Name show the path of the previous selected file (see on image) How I can clear this path every time he press Open button?
You are probably using the same instance of an OpenFileDialog each time you click the button, which means the previous file name is still stored in the FileName property. You should clear the FileName property before you display the dialog again:
ofd.FileName = String.Empty;
if (ofd.ShowDialog() == DialogResult.OK)
text = File.ReadAllText(ofd.FileName, Encoding.Default);
try this:
ofd.FileName = String.Empty;
You need to reset the filename.
openFileDialog1.FileName= "";
Or
openFileDialog1.FileName= String.Empty()
you can simply add this line before calling ShowDialog():
ofd.FileName = String.Empty;
To clear just the filename (and not the selected path), you can set the property FileName to string.Empty.
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
label1.Text = sender.ToString();
}
What about this one.

Allow users to select and change icons in a multi company program

I am developing a C# program that will allow the users to enter multiple companies, and I am trying to allow the users to use an icon (as well as the name of the company in the taskbar) for each company to help them differ easily between them.
So far I have the following code, which shows a picturebox of the icon to confirm it is the correct image, but when I run the program it crashes with an out-of-memory-exception after changing the image 3 or 4 times. After reading solutions to similar questions on this site I have tried to dispose the image but can't seem to get it to work correctly:
private void btnBrowse_Click(object sender, EventArgs e)
{
openFileDialog1.InitialDirectory = "R:\\rightsort fulfilment\\charity icons";
openFileDialog1.Title = "Choose an Icon";
openFileDialog1.FileName = "";
openFileDialog1.Filter = "Icon Files|*.ico";
if (openFileDialog1.ShowDialog() != DialogResult.Cancel)
{
txtIcon.Text = openFileDialog1.FileName;
pictureBox1.Image = Image.FromFile(txtIcon.Text);
pictureBox1.Visible = true;
}
else
{
txtIcon.Text = "";
pictureBox1.Visible = false;
}
}
Any help would be greatly appreciated!
Image class inherited from IDisposable. You need to call Dispose method every time you replace it with new image to release resources.
However I don't know if this is the source of your problem. You also can try to run memory profiler and see where and how exactly memory gets allocated.
I would try disposing the old image in the picture control. Something like this:
if (openFileDialog1.ShowDialog() != DialogResult.Cancel)
{
txtIcon.Text = openFileDialog1.FileName;
Image oldImage = pictureBox1.Image;
pictureBox1.Image = Image.FromFile(txtIcon.Text);
if (oldImage != null)
{
oldImage.Dispose();
}
pictureBox1.Visible = true;
}

Categories