取消SaveFileDialog时如何"做某事"?

ayt*_*thy 2 c# winforms

注意:这个问题的答案已经过时了.


所以,我有一个保存对话框:

...
SaveFileDialog sfd = new SaveFileDialog();
sfd.ShowDialog();

// SaveFileDialog.[Whatever] - Init code basically.

if (sfd.DialogResult == DialogResult.OK)
    {
        // Definitely do something.
        Console.Print("File selected.");
    }
if (sfd.DialogResult == DialogResult.Abort)
    {
        // Maybe the opposite of the above?
        Console.Print("File selection Cancelled");
    }
if ( ... ) { }
    and so on.
Run Code Online (Sandbox Code Playgroud)

但...... SaveFileDialog.DialogResult已被事件所取代......

并且唯一可用的事件是SaveFileDialog.FileOK,SaveFileDialog.DisposedSaveFileDialog.HelpRequest.

如何在用户单击" 取消"而不是"完成"(单击" 保存")时触发事件(或移动到一行代码)?

我希望根据用户是取消还是成功选择要保存的文件位置进行分支.

Rez*_*aei 5

与工作DialogResult不会被弃用,以及那些事件是不是新的东西.
要执行取消操作,您可以创建SaveFileDialog并配置它,您可以调用ShowDialog然后检查结果:

var sfd= new SaveFileDialog();
//Other initializations ...
//sfd.Filter= "Text files (*.txt)|*.txt|All files (*.*)|*.*";
//sfd.DefaultExt = "txt";

if(sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    MessageBox.Show("Save Clicked");
    //?Do something for save
}
else
{
    MessageBox.Show("Cancel Clicked");
    //Do something for cancel
}
Run Code Online (Sandbox Code Playgroud)

例如,您可以使用FileName属性访问所选文件MessageBox.Show(sfd.FileName);