文本框的参数异常

时间:2013-10-25 17:42:40

标签: c# textbox

我有一个文本框。当我将文件拖入其中并单击按钮时,文本框中的文件将移动到另一个文件夹。但是,如果我忘记将文件拖到文本框并单击按钮,程序将抛出一个不存在sourceFileName的Argument异常。

private void button_Click(object sender, EventArgs e)
{
    // here occurs Argument Exception Because there isn't any TextBox.Text
    File.Copy(TextBox.Text, "C:/");

    if (String.IsNullOrEmpty(TextBox.Text))
        {
            MessageBox.Show("Please drag a file to the Tex Box!");
        }
}

如何捕获缺少源文件的参数异常?

6 个答案:

答案 0 :(得分:3)

string.IsNullOrEmpty之前检查File.Copy,如果TextBox为空,则return来自该事件。

private void button_Click(object sender, EventArgs e)
{
    if (String.IsNullOrEmpty(TextBox.Text))
        {
            MessageBox.Show("Please drag a file to the Tex Box!");
            return; // return from the event
        }

    File.Copy(TextBox.Text, "C:/");
}

如果您使用string.IsNullOrWhiteSpace也会更好,因为它会检查nullstring.Empty和空格(仅当您使用.Net framework 4.0或更高版本时)

答案 1 :(得分:2)

  

但如果我忘记将文件拖到文本框

然后您需要在代码中进行一些错误检查。如果在UI中可以在不指定文件的情况下单击按钮,则代码不能假定文件名将存在。 (目前确实如此。)

在执行文件操作之前尝试检查条件:

if (!string.IsNullOrEmpty(TextBox.Text))
    File.Copy(TextBox.Text, "C:/");

甚至可以更进一步检查该值是否确实是一个有效的文件:

if (! string.IsNullOrEmpty(TextBox.Text))
    if (File.Exists(TextBox.Text))
        File.Copy(TextBox.Text, "C:/");

添加一些else条件以向用户显示相应的消息。相反,您可以在UI中禁用该按钮,直到文本框具有值。或者,你可以采取两种方法。

(顺便说一句,TextBox对于变量来说并不是一个特别好的名称。这是实际类的名称,可能与变量本身相同的类。它是最好区分类名和变量实例名,特别是如果你打算在该类上使用静态方法。)

答案 2 :(得分:1)

String.IsNullOrEmpty语句移到另一个语句之前。

private void button_Click(object sender, EventArgs e)
{
    if (String.IsNullOrEmpty(TextBox.Text))
       MessageBox.Show("Please drag a file to the Tex Box!");
    else
       File.Copy(TextBox.Text, "C:/");  
}

答案 3 :(得分:1)

为什么你之后做检查?

if (String.IsNullOrEmpty(TextBox.Text))
    MessageBox.Show("Please drag a file to the Tex Box!");
else
    File.Copy(TextBox.Text, "C:/");

如果它有效,您只想执行该操作。真的,你可能需要尝试/捕捉整个事情,因为可能会发生多个错误

答案 4 :(得分:1)

我倾向于使用File.Exists来查看文件是否预先存在 我喜欢在特殊情况下使用例外,但这是个人偏好

答案 5 :(得分:0)

 if (File.Exists(TextBox.Text.Trim()))
  {
    File.Copy(TextBox.Text, "C:/");
  }
else
  {
    MessageBox.Show("Please drag a file to the Tex Box!");
    return;
  }