openFileDialog を表示するのに問題があります。
これが私の現在の状況です:
複数のフォームを持つ WinForms プログラムがありますが、それらはすべて同じスレッドで実行されます。現在、それぞれ saveFileDialog と openFileDialog を持つ 2 つのフォームがあります。
開始時に開く最初のフォームでは、saveFileDialog と openFileDialog の両方が正常に機能しますが、2 番目のフォームでは、openFileDialog は開くことさえ拒否します。
これが私が今得ているスタックトレースです:
System.Windows.Forms.OpenFileDialog.OpenFile() の System.Windows.Forms.dll で、タイプ 'System.IndexOutOfRangeException' の初回例外が発生しました。
問題が発生するコードは次のとおりです。
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/Invokes を使用しています。ただし、それらはビットマップと画面を扱います。
私が抱えている問題に関して、これがあまり多くの情報ではないことを願っています。足りない場合は、他に何を提供してほしいか教えてください。
この質問はこの質問 ( Stackoverflow/CLR Error in C# OpenFileDialog ) に似ているように見えるかもしれませんが、その質問にはまだ受け入れられた回答がありません。しかし、彼の問題とは異なり、2 つの saveFileDialogs と 1 つの openFileDialogs がありますが、まったく失敗しません。