C# 如何不允许基于条件调用folderBrowserDialog?

C# 如何不允许基于条件调用folderBrowserDialog?,c#,winforms,C#,Winforms,我的代码不允许在文本框中输入0-9/a-z以外的任何字符。为此,使用的代码如下,这是一种方法 public bool IsValidFilename(string exportName) { var regex = new Regex(@"[^a-zA-Z0-9\s]"); if (regex.IsMatch(exportName)) { MessageBox.Show("Enter only valid

我的代码不允许在文本框中输入0-9/a-z以外的任何字符。为此,使用的代码如下,这是一种方法

    public bool IsValidFilename(string exportName)
    {
        var regex = new Regex(@"[^a-zA-Z0-9\s]");
        if (regex.IsMatch(exportName)) 
        {
            MessageBox.Show("Enter only valid characters! (Aa-Zz, 0-9)", MessageBoxButtons.OK, MessageBoxIcon.Information);
        };

        return true;
    }
我在一个按钮点击事件中调用了这个方法,messagebox按预期显示。但是接下来是一个folderBrowserDialog方法,不管上面代码的结果如何,它都会打开

  public void btExport_Click(object sender, EventArgs e)
    {
        IsValidFilename(textBox1.Text);

        var dialogResult = folderBrowserDialog.ShowDialog();
    }
如何不允许应用程序打开FolderBrowser对话框


PS:我希望父应用程序运行,但不想使用application.Exit()或this.Close()。

您的方法已返回布尔值,这意味着您可以执行以下操作:

public void btExport_Click( object sender, EventArgs e )
{
    if( IsValidFilename( textBox1.Text ) )
    {
        var dialogResult = folderBrowserDialog.ShowDialog();
    }
}
但是,如果方法失败,则必须返回false:

public bool IsValidFilename(string exportName)
{
    var regex = new Regex(@"[^a-zA-Z0-9\s]");
    if (regex.IsMatch(exportName)) 
    {
        MessageBox.Show("Enter only valid characters! (Aa-Zz, 0-9)", MessageBoxButtons.OK, MessageBoxIcon.Information);
        //If this is the location of the error, put return false here.
        return false;
    };

    return true;
}
1快速注释,不应该

if (regex.IsMatch(exportName))


我的方法返回true。在用户将有效字符输入文本框之前,我不想继续编写代码。i、 例如,不应在if条件内调用folderBrowserDialog。它应该在外面。@Allan抱歉忽略了一件事,让我编辑一下,我将100%确定答案会起作用:)@Allan如果它无效,你需要在bool上返回false,因此它将不会继续,添加了一个示例,但只有你可以决定工作方式等。如果(!regex.IsMatch(exportName)),方法也应该返回false?谢谢,很好!
if (!regex.IsMatch(exportName)) //!