/ / SaveFileDialog wird als leer gespeichert ext? - C # - c #

SaveFileDialog speichert als leer ext? - C # - c #

Also habe ich den Dreh raus mit OpenFileDialog, jetzt ichIch kann SaveFileDialog nicht verstehen. Ich habe mir ein paar Seiten angeschaut und jede von ihnen hat ihre eigenen Möglichkeiten, aber keiner von ihnen geht so weit, dass der Text der Richtextbox in einer Datei gespeichert wird.

private void button1_Click(object sender, EventArgs e)
{
Stream myStream;
SaveFileDialog exportdialogue = new SaveFileDialog();

exportdialogue.Filter = "txt files (*.txt)|*.txt*";
exportdialogue.FilterIndex = 2;
exportdialogue.RestoreDirectory = true;

if (exportdialogue.ShowDialog() == DialogResult.OK)
{
if ((myStream = exportdialogue.OpenFile()) != null)
{
StreamWriter wText = new StreamWriter(myStream);

wText.Write("Some Text");

myStream.Close();
}
}
}

Verwenden einer Richtextbox und einer normalen Schaltfläche, auch "using System.IO;" (Für den Strom)

Ich versuche, die Schaltfläche SaveFileDialog zu verwenden, damit der Inhalt in der Richtextbox in eine Textdatei exportiert werden kann.

Problem: Ich bin mir nicht sicher, was ich von hier aus tun muss, um Inhalte aus dem Rich-Text-Feld zu speichern. Sie wissen nicht, warum SaveFileDialog Dateien ohne Erweiterung speichert, wenn ein Filter vorhanden ist.

Antworten:

1 für die Antwort № 1

Sie setzen:

exportdialogue.Filter = "txt files (*.txt)|*.txt*";

die nur EINEN Filter enthält, aber Sie legen fest:

exportdialogue.FilterIndex = 2;

was bedeutet, den SECOND-Filter zu verwenden. (FilterIndex ist 1-basiert).

Wenn Sie FilterIndex = 1 festlegen, sollte Ihre Datei die Erweiterung .txt haben


0 für die Antwort № 2

Sie können verwenden using {} blockieren, um das Problem zu lösen:

Versuche dies:

            SaveFileDialog exportdialogue = new SaveFileDialog();

exportdialogue.Filter = "txt files (*.txt)|*.txt*";
exportdialogue.FilterIndex = 2;
exportdialogue.RestoreDirectory = true;


if (exportdialogue.ShowDialog() == DialogResult.OK)
{
using( Stream myStream = exportdialogue.OpenFile())
{
StreamWriter wText = new StreamWriter(myStream);

wText.Write("Some Text");
wText.Close();


}
}

-1 für die Antwort № 3

Sie müssen die Methode savefile verwenden, um die Textbox zu erreichen und den Dateinamen aus der savedialogbox übernehmen.

reachtextbox.SaveFile(exportdialogue.FileName);

PS: Es wird so etwas wie der obige Code sein.