【问题标题】:Null Reference Exception openFileDialog空引用异常 openFileDialog
【发布时间】:2013-05-14 08:27:19
【问题描述】:

代码:

namespace bla_bla_bla

{   public delegate void pathSelected(string path);
 //...
  public partial class Form1 : Form
  {
      public pathSelected onPath;
 //...
  private void button1_Click(object sender, EventArgs e)
  {

    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    openFileDialog1.Filter ="Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF";
    openFileDialog1.Multiselect = true;
    openFileDialog1.ShowDialog();
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    if (openFileDialog1.SafeFileName != null)
    onPath(openFileDialog1.SafeFileName);
  }

问题:

为什么我在最后一行得到 null 引用例外?

错误:

(原海报应在此处添加)

【问题讨论】:

  • 什么是onPath?您是否尝试调试并检查onPathopenFileDialog1 是否已变为null(最后不太可能)。我猜onPath 的类型是pathSelected,但你还没有给它赋值,所以它是null
  • 猜“onPath”真的是“pathSelected”,他正试图打电话给我的代表
  • 为什么要给openFileDialog1.ShowDialog()打两次电话?
  • 你应该把 pathSelected onPath 放在某处吗?
  • 另外,请注意,pathSelected 的参数标记为“路径”,然而,SafeFileName 不包含路径,它只会返回文件名和扩展名。

标签: c# nullreferenceexception


【解决方案1】:

不完全理解您的问题,或者为什么需要委托,但在您的 Button1 点击事件处理程序上尝试这样的事情:

int size = -1;
DialogResult result = openFileDialog1.ShowDialog(); 
if (result == DialogResult.OK) {
    string file = openFileDialog1.FileName;
    try {
        string text = File.ReadAllText(file);
        size = text.Length;
    }
    catch (IOException) {
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-16
    • 2011-07-18
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多