c# openFileDialog IndexOutofRange error

本文关键字:error IndexOutofRange openFileDialog | 更新日期: 2023-09-27 18:11:18

我有一个问题得到一个openFileDialog甚至显示。

这是我目前的情况:

我有一个有多个窗体的WinForms程序,但是它们都在同一个线程中运行。目前,我有两个窗体,每个窗体都有一个saveFileDialog和一个openFileDialog。

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

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

类型为'System '的第一次异常。在System.Windows.Forms.dll中发生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);
        }
    }

如果用户单击ok,这将被触发:

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/invoke,以及上面代码所在的形式中的一些。他们处理位图和屏幕。

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

  • 我知道这个问题可能看起来类似于这个问题(c# OpenFileDialog中的Stackoverflow/CLR错误),但这个问题还没有得到公认的答案。但不像他的问题,虽然我确实有2个saveFileDialogs,和1个其他openFileDialogs,他们根本没有失败。

c# openFileDialog IndexOutofRange error

没有提示用户选择文件…你需要显示OpenFileDialog .

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

同样,OpenFile()本身不会做太多事情。你没有对它创建的Stream做任何事情