繁体   English   中英

c#openFileDialog IndexOutofRange错误

[英]c# openFileDialog IndexOutofRange error

我有一个问题甚至无法显示openFileDialog。

这是我目前的情况:

我有一个具有多种形式的WinForms程序,但是它们都在同一线程中运行。 当前,我有两种形式,每种形式都有一个saveFileDialog和openFileDialog。

对于第一种形式(即在启动时打开的形式),saveFileDialog和openFileDialog都可以正常工作,但是对于第二种形式,openFileDialog甚至拒绝打开。

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

类型为“ System.IndexOutOfRangeException”的第一次机会异常发生在System.Windows.Forms.OpenFileDialog.OpenFile()的System.Windows.Forms.dll中

这是发生问题的代码:

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

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

  • 我知道这个问题似乎类似于这个问题( C#OpenFileDialog中的Stackoverflow / CLR错误 ),但是该问题还没有被接受的答案。 但是与他的问题不同,尽管我确实有2个saveFileDialogs和1个其他openFileDialogs,但它们完全不会失败。

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

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

另外, OpenFile()本身并不能做很多事情。 您对它创建的Stream不做任何事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM