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,他们根本没有失败。
没有提示用户选择文件…你需要显示OpenFileDialog
.
...
bmpOpenFileDialog.ShowDialog(); // <-- you forgot this line
bmpOpenFileDialog.OpenFile();
同样,OpenFile()
本身不会做太多事情。你没有对它创建的Stream
做任何事情