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