c#openFileDialog IndexOutofRange错误

时间:2014-07-02 11:44:22

标签: c# winforms forms openfiledialog indexoutofrangeexception

我有一个问题是让openFileDialog甚至显示。

以下是我目前的情况:

我有一个包含多个表单的WinForms程序,但它们都在同一个线程中运行。 目前,我有两种形式,每种形式都有一个saveFileDialog和openFileDialog。

对于第一个表单,即启动时打开的表单,saveFileDialog和openFileDialog都可以正常工作,但对于第二个表单,openFileDialog甚至拒绝打开。

这是我现在得到的堆栈跟踪:

  

System.Windows.Forms.dll中出现'System.IndexOutOfRangeException'类型的第一次机会异常     在System.Windows.Forms.OpenFileDialog.OpenFile()

以下是出现问题的代码:

private void loadScreenshotToolStripMenuItem_Click(object sender, EventArgs e)
    {
        try
        {
            bmpOpenFileDialog = new OpenFileDialog();
            bmpOpenFileDialog.Filter = "Bitmap|*.bmp;*.dib|Exchangable Image Format|*.exif|Icon|*.ico|JPEG|*.jpg;*.jpeg;*" +
    ".jpe;*.jfif|GIF|*.gif|PNG|*.png|All files|*.*";
            this.bmpSaveFileDialog.Title = "Load Screenshot";
            bmpOpenFileDialog.OpenFile();
        }
        catch (Exception ex)
        {
            MessageBox.Show("\nReport this error to the creator:\n\n" + ex);
            System.Diagnostics.Debug.WriteLine(ex.StackTrace);
        }
    }

如果用户点击“确定”,则会触发此操作:

private void bmpOpenFileDialog_FileOk(object sender, CancelEventArgs e)
    {
        Image tempIMG = Image.FromFile(bmpOpenFileDialog.FileName);
        oriBmp = new Bitmap(tempIMG);
        prntscrPictureBox.Image = oriBmp;
        saveScreenshotToolStripMenuItem.Enabled = true;
        zoomInToolStripMenuItem.Enabled = true;
        zoomOutToolStripMenuItem.Enabled = true;
        originalZoomToolStripMenuItem.Enabled = true;
        fullSizeToolStripMenuItem.Enabled = true;
        customToolStripMenuItem.Enabled = true;
        zToolStripStatusLabel.Text = "Zoom Level: " + zoomFactor.ToString("2F");
    }
  • 我最初在工具箱中直接使用了一个openFileDialog,其属性发生了变化,然后尝试尝试另一种方式,就像你现在看到的那样,它给了我这个问题。

  • 在某些时候它给我的另一个错误是关于找不到文件,好像openfiledialog试图在显示之前打开一个不存在的文件。

  • 我也在其他表单中使用相当多的p / Invokes,以及上面代码所在的表单中的一些。它们处理位图和屏幕。

  • 我希望这不是关于我所遇到的问题的太多信息。如果还不够,请告诉我您还希望我提供什么。

  • 我知道这个问题可能与这个问题类似(Stackoverflow/CLR Error in C# OpenFileDialog),但这个问题还没有被接受。但与他的问题不同,虽然我有2个saveFileDialogs和1个其他openFileDialogs,但它们根本没有失败。

1 个答案:

答案 0 :(得分:2)

您尚未提示用户选择文件...您需要显示OpenFileDialog

...
bmpOpenFileDialog.ShowDialog();  // <-- you forgot this line
bmpOpenFileDialog.OpenFile();

此外,OpenFile()本身并没有做太多事情。您没有对其创建的Stream做任何事情。