Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#openFileDialog索引自动失效错误_C#_Winforms_Forms_Openfiledialog_Indexoutofrangeexception - Fatal编程技术网

c#openFileDialog索引自动失效错误

c#openFileDialog索引自动失效错误,c#,winforms,forms,openfiledialog,indexoutofrangeexception,C#,Winforms,Forms,Openfiledialog,Indexoutofrangeexception,我甚至在显示openFileDialog时遇到了一个问题 以下是我目前的情况: 我有一个包含多个表单的WinForms程序,但它们都在同一个线程中运行。 目前,我有两个表单,分别有saveFileDialog和openFileDialog 对于启动时打开的第一个表单,saveFileDialog和openFileDialog都可以正常工作,但是对于第二个表单,openFileDialog甚至拒绝打开 这是我现在得到的堆栈跟踪: System.Windows.Forms.dll中首次出现类型为“S

我甚至在显示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/invoke,也在上面代码所在的表单中使用了一些p/invoke。他们处理位图和屏幕

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

  • 我知道这个问题可能类似于这个问题(),但这个问题还没有公认的答案。但与他的问题不同的是,尽管我有2个saveFileDialogs和1个其他openFileDialogs,但它们根本不会失败


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

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

bmpOpenFileDialog.ShowDialog();//天哪,我现在觉得自己很愚蠢,我怎么会错过这个。。。现在终于开始工作了,谢谢!(我甚至错过了在第一个openFileDialog中使用“.ShowDialog”而不是“.OpenFile”的机会……)没问题,有时我们只需要第二双眼睛。我完全同意。另外,我不需要OpenFile(),因为我有这样一个:Image tempIMG=Image.FromFile(bmpOpenFileDialog.FileName);