Ordnungsgemäße funktionieren des 'Datei Speichern' im Editor-Programm in C#
public partial class Form1 : Form
{
SaveFileDialog sfd = new SaveFileDialog();
OpenFileDialog ofd = new OpenFileDialog();
public string contents = string.Empty;
public Form1()
{
InitializeComponent();
this.Text = "Untitled";
}
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{
if (richTextBox1.Text != contents)
{
DialogResult dr = MessageBox.Show("Do You want to save the changes made to " + this.Text, "Save", MessageBoxButtons.YesNoCancel);
if (dr == DialogResult.Yes)
{
sfd.Title = "Save";
if (SaveFile() == 0)
return;
else
{
richTextBox1.Text = "";
this.Text = "Untitled";
}
contents = "";
}
else if (dr == DialogResult.No)
{
richTextBox1.Text = "";
this.Text = "Untitled";
contents = "";
}
else
{
richTextBox1.Focus();
}
}
else
{
this.Text = "Untitled";
richTextBox1.Text = "";
contents = "";
}
}
private int SaveFile()
{
sfd.Filter = "Text Documents|*.txt";
sfd.DefaultExt = "txt";
if (sfd.ShowDialog() == DialogResult.Cancel)
{
richTextBox1.Focus();
return 0;
}
else
{
contents = richTextBox1.Text;
if (this.Text == "Untitled")
richTextBox1.SaveFile(sfd.FileName,RichTextBoxStreamType.PlainText);
else
{
sfd.FileName = this.Text;
richTextBox1.SaveFile(sfd.FileName,RichTextBoxStreamType.PlainText);
}
this.Text = sfd.FileName;
return 1;
}
}
private void OpenFile()
{
ofd.Filter = "Text Documents|*.txt";
if (ofd.ShowDialog() == DialogResult.Cancel)
richTextBox1.Focus();
else
{
richTextBox1.LoadFile(ofd.FileName, RichTextBoxStreamType.PlainText);
this.Text = ofd.FileName;
contents = richTextBox1.Text;
}
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
if (richTextBox1.Text != contents)
{
DialogResult dr = MessageBox.Show("Do You want to save the changes made to " + this.Text, "Save", MessageBoxButtons.YesNoCancel);
if (dr == DialogResult.Yes)
{
SaveFile();
OpenFile();
}
else if (dr == DialogResult.No)
{
OpenFile();
}
else
{
richTextBox1.Focus();
}
}
else
OpenFile();
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFile();
}
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
sfd.Filter = "Text Documents|*.txt";
sfd.DefaultExt = "txt";
if (sfd.ShowDialog() == DialogResult.Cancel)
{
richTextBox1.Focus();
}
else
{
contents = richTextBox1.Text;
richTextBox1.SaveFile(sfd.FileName, RichTextBoxStreamType.PlainText);
this.Text = sfd.FileName;
}
}
Wenn wir öffnen Sie den Windows notepad-Anwendung öffnen Sie dann eine Datei, ändert Sie den Inhalt und speichern Sie es, es wird einfach gespeichert, ohne öffnen des Datei Speichern-dialogs. Aber in der Editor-Programm, das ich erstellt habe über den Datei Speichern dialog öffnet sich beim anklicken von "Speichern" nach dem ändern der Inhalt der gespeicherten Datei. Obwohl die gleiche Datei-Namen wird in der Datei speichern unter dialog, aber beim anklicken von "Speichern" es gibt eine Meldung "Der Dateiname bereits existiert. Wollen Sie es ersetzen?". Das ist das, was ich will, zu entfernen, und stellen Sie die geänderten Inhalte gespeichert, die direkt auf die geöffnete Datei ohne öffnen des Datei speichern-dialogs.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Set sfd.OverwritePrompt = false jederzeit nach Errichtung und vor ShowDialog zum unterdrücken der Warnung überschreiben.
Wollen Sie haben zwei Möglichkeiten zu sparen: Ein 'Speichern Als ...' - Schaltfläche und eine Schaltfläche "Speichern". Sie können erstellen Sie eine
string
zu halten, den Pfad der geöffneten Datei. Die Lage kann sich auch ändern, wenn der Benutzer gibt einen neuen Speicherort, wenn Sie die Datei speichern. Wenn der Benutzer nicht die Datei öffnen, wird der "Sichern Als..." - Taste, öffnen Sie das regelmäßige Speichern-Dialog. Sobald der Benutzer gibt den Speicherort Ihres Dokuments, können Sie speichern Sie die Datei Pfad, string und verwenden Sie eine `StreamWriter', um es zu speichern, ohne den dialog:Ich dir auch empfehlen umschließen die
using(...){ }
block in einemtry/catch
Anweisung und behandeln von Ausnahmen.Was Sie tun müssen, ist, speichern Sie den Dateinamen eingegeben, dann, wenn die option "speichern" gedrückt wird, überprüfen Sie die zuvor eingegebenen Dateinamen. Wenn Sie eine haben, überspringen Sie das Dialogfeld anzeigen und führen Sie einfach die speichern-code.