如何使FolderBrowserDialog不关闭,当点击ok按钮在c#

本文关键字:ok 按钮 FolderBrowserDialog 何使 | 更新日期: 2023-09-27 18:15:46

我想在点击OK按钮时做一些验证。例如,如果选择的文件夹是临时文件夹,当我点击确定按钮时,应该显示错误消息,文件夹浏览器对话框不应该关闭。怎么做呢,这个功能就可以实现了。你能给我举个例子吗?

如何使FolderBrowserDialog不关闭,当点击ok按钮在c#

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.");
    }
}

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

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