Я хотел бы предложить пользователю диалоговое окно сохранения файла, когда он нажимает «ОК» в отображаемом окне сообщения. Как я могу это сделать...
Как открыть диалоговое окно сохранения файла, когда я нажимаю «ОК» в окне сообщения
Ответы (3)
В обработчике события кнопки используйте следующий код.
DialogResult messageResult = MessageBox.Show("Save this file?", "Save", MessageBoxButtons.OKCancel);
if (messageResult == DialogResult.OK)
{
using (var dialog = new System.Windows.Forms.SaveFileDialog())
{
dialog.DefaultExt = "*.txt";
dialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
DialogResult result = dialog.ShowDialog();
if (result == DialogResult.OK)
{
string filename = dialog.FileName;
// Save here
}
}
}
Изменить: если вы хотите получить FileStream напрямую, вы можете использовать SaveFileDialog.OpenFile()
. Это требует меньше разрешений, если вы запускаете приложение с частичным доверием.
person
Albin Sunnanbo
schedule
26.08.2010
Привет, изначально у меня будет окно сообщений с текстом. Когда я нажимаю «ОК», я хочу открыть диалоговое окно сохранения файла.
- person Developer; 26.08.2010
msdn.microsoft.com/en-us/library/519bytz3.aspx MessageBox.Show() также возвращает DialogResult, который вы можете использовать.
- person mehmet6parmak; 26.08.2010
Вы можете погуглить это. Если у вас возникли проблемы с событием click. Я предполагаю, что вы используете визуальную студию, просто дважды щелкните кнопку на поверхности дизайна и напишите свой код внутри обработчика, который вы используете.
http://www.jonasjohn.de/snippets/csharp/save-file-dialog-example.htm
MessageBox.Show() возвращает DialogResult
DialogResult result1 = MessageBox.Show("Is Dot Net Perls awesome?",
"Important Question",
MessageBoxButtons.OK);
if (result1 == DialogResult.OK)
{ //Show SaveFileDialog }
person
mehmet6parmak
schedule
26.08.2010
Я получил ответ, это то, что я прошу
MessageBox.Show("Save The Current File");
if (Convert.ToBoolean( DialogResult.OK ))
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.InitialDirectory = @"C:\";
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
string s= saveFileDialog1.FileName;
}
person
Developer
schedule
26.08.2010
Сначала я хотел сказать, что это не скомпилируется, но с закрывающим '}' это действительно так. Тогда я собирался сказать, что этот код не делает того, что вы от него ожидаете, но опять же, он действительно делает. Странно, как две ошибки могут быть правильными. Но тем не менее никогда больше не пишите такой запутанный код.
- person Albin Sunnanbo; 26.08.2010
Я просто пишу образец, поэтому я пропустил конечный тег
- person Developer; 26.08.2010
Да, но проблема в строке 'if (Convert.ToBoolean(DialogResult.OK))'. Если вы добавите дополнительные кнопки в MessageBox (например, OKCancel), это всегда будет верно, поскольку вы не сравниваете результат с MessageBox, вы просто проверяете, что CONSTANT DialogResult.OK не равен нулю. Это выглядит чистой случайностью, что в данном конкретном случае это работает, но как только вы добавите еще одну кнопку в MessageBox, ваш код развалится.
- person Albin Sunnanbo; 26.08.2010
Для моей цели достаточно OK, поэтому я сделал это
- person Developer; 26.08.2010