【问题标题】:OpenFileDialog return an exception when it is emptyOpenFileDialog 为空时返回异常
【发布时间】:2014-02-21 19:04:01
【问题描述】:
bool gGender = false;

if (radioBtnMale.Checked == true)
   gGender = true;

if (!string.IsNullOrEmpty(txtboxName.Text))
{
    if (imageToByteArray(Image.FromFile(openFileDialogPhoto.FileName)) == null)
    {
        repository.WorkflowsRepository.AddEmployee(txtboxName.Text, dateTimePickerBirthDate.Value, dateTimePickerHireDate.Value, gGender, txtboxMobile.Text, txtboxAddress.Text, txtboxEmail.Text,null);
    }

    repository.WorkflowsRepository.AddEmployee(txtboxName.Text, dateTimePickerBirthDate.Value, dateTimePickerHireDate.Value, gGender, txtboxMobile.Text, txtboxAddress.Text, txtboxEmail.Text, imageToByteArray(Image.FromFile(openFileDialogPhoto.FileName)));

    Information WFNameInfo = new Information("Massege", "The Employee " + txtboxName.Text + " was Added successfully");
    WFNameInfo.ShowDialog();
}
else
{
    Error err = new Error("The Employee must have a name, please try again");
    err.ShowDialog();
}

在此示例中,我想添加一名员工,但当员工没有照片时,我的意思是 OpenFileDialog 没有任何值,它在添加操作时返回异常。

我需要能够添加没有照片的员工!

【问题讨论】:

  • 请出示您的代码
  • 帮助我们帮助您。如果您不添加代码,我们将无法帮助您。我们应该怎么看问题是什么?您还需要向我们展示完整的异常消息
  • 如果您的图片为空,您将添加两次员工
  • 您是在另一个事件中调用openFileDialogPhoto.ShowDialog(),然后在txtboxName.Text 中设置文件名吗?
  • 是的,我从另一个方法调用

标签: c# winforms openfiledialog


【解决方案1】:

我认为您的问题是缺少 else 语句:

if (imageToByteArray(Image.FromFile(openFileDialogPhoto.FileName)) == null)
{
    repository.WorkflowsRepository.AddEmployee(txtboxName.Text, dateTimePickerBirthDate.Value, dateTimePickerHireDate.Value, gGender, txtboxMobile.Text, txtboxAddress.Text, txtboxEmail.Text,null);
}
 repository.WorkflowsRepository.AddEmployee(txtboxName.Text, dateTimePickerBirthDate.Value, dateTimePickerHireDate.Value, gGender, txtboxMobile.Text, txtboxAddress.Text, txtboxEmail.Text, imageToByteArray(Image.FromFile(openFileDialogPhoto.FileName)));

if (imageToByteArray() == null) 您仍在执行第二条语句。试试:

if (imageToByteArray(Image.FromFile(openFileDialogPhoto.FileName)) == null)
{
    repository.WorkflowsRepository.AddEmployee(txtboxName.Text, dateTimePickerBirthDate.Value, dateTimePickerHireDate.Value, gGender, txtboxMobile.Text, txtboxAddress.Text, txtboxEmail.Text,null);
}
else
{
    repository.WorkflowsRepository.AddEmployee(txtboxName.Text, dateTimePickerBirthDate.Value, dateTimePickerHireDate.Value, gGender, txtboxMobile.Text, txtboxAddress.Text, txtboxEmail.Text, imageToByteArray(Image.FromFile(openFileDialogPhoto.FileName)));
}

【讨论】:

    【解决方案2】:

    问题:您没有调用openFileDialogPhoto.ShowDialog(),而是尝试访问openFileDialogPhoto.FileName,当然是null

    解决方案:您应该调用openFileDialogPhoto.ShowDialog(),并且只有在用户选择文件时才能继续进行。您可以在访问其FileName之前通过DialogResult返回值进行检查属性。

    试试这个:

    if(openFileDialogPhoto.ShowDialog()==DialogResult.OK)
    {
       if (imageToByteArray(Image.FromFile(openFileDialogPhoto.FileName)) == null)
       {
         repository.WorkflowsRepository.AddEmployee(txtboxName.Text, dateTimePickerBirthDate.Value, dateTimePickerHireDate.Value, gGender, txtboxMobile.Text, txtboxAddress.Text, txtboxEmail.Text,null);
       }
       repository.WorkflowsRepository.AddEmployee(txtboxName.Text, dateTimePickerBirthDate.Value, dateTimePickerHireDate.Value, gGender, txtboxMobile.Text, txtboxAddress.Text, txtboxEmail.Text, imageToByteArray(Image.FromFile(openFileDialogPhoto.FileName)));
       Information WFNameInfo = new Information("Massege", "The Employee " + txtboxName.Text + " was Added successfully");
       WFNameInfo.ShowDialog();
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 2013-05-10
      • 2016-02-27
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多