如何不允许根据条件调用folderBrowserDialog?

时间:2017-05-12 06:56:41

标签: 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 characters! (Aa-Zz, 0-9)", MessageBoxButtons.OK, MessageBoxIcon.Information);
        };

        return true;
    }

我在Button Click事件中调用了此方法,并且消息框按预期显示。但是接下来是一个folderBrowserDialog方法,无论上述代码的结果如何,它都会打开。

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

        var dialogResult = folderBrowserDialog.ShowDialog();
    }

如何不允许应用程序打开folderBrowserDialog?

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

1 个答案:

答案 0 :(得分:0)

你的方法已经返回一个bool,这意味着你可以这样做:

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))

if (!regex.IsMatch(exportName)) //!