如何在C#中单击“确定”按钮时关闭FolderBrowserDialog

时间:2014-07-30 02:40:42

标签: c# folderbrowserdialog

我想点击确定按钮时进行一些验证。 例如,如果选择的文件夹是临时文件夹,当我单击“确定”按钮时,应显示错误消息,并且不应关闭“文件夹浏览器”对话框。 我该怎么办,这个功能可以实现。 你能举个例子吗?

2 个答案:

答案 0 :(得分:2)

FolderBrowserDialog不会像其他WinForms组件那样公开任何Validation事件或OnValidate方法。

FolderBrowserDialog确实有OwnerWndProc可以用来扩展对话框,但是我不鼓励它,因为它增加了不必要的复杂性。

我认为最好的选择是在发生验证错误时重新打开表单,如下所示:

Boolean isValid = false;
while( !isValid ) {

    DialogResult result = fbd.ShowDialog(this);
    if( result != DialogResult.OK ) return;
    isValid = IsFolderValid( fbd.SelectedPath );
    if( !isValid ) {
        MessageBox.Show(this, "Selected folder is invalid, please select a different folder or click Cancel.");
    }
}

答案 1 :(得分:1)

我建议您让FolderBorwserDialog关闭,检查所选路径,如果它无效则显示错误消息,最后在关闭错误消息后再次显示文件对话框。这可以在while循环中完成,例如:

FolderBrowserDialog fbd = new FolderBrowserDialog();
while (true)
{
    if (fbd.ShowDialog() == DialogResult.OK)
    {
        if (Valid(fbd.SelectedPath))
            break;
        else
            MessageBox.Show("Something");
    }
    else 
        break;
}