掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ループ処理を中断して、最初からやり直すには (ID:138002)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつもお世話になっております。 Exit Forと記述しているのですが、 イベントを発生させてもループから強制的に抜けられません。 ループ処理が重いためか、ループ中のイベント自体無視されているようです。 ちゃんとループから抜け出すにはどうしたらいいでしょうか。 また、AppliCation.DoEvents()で例外が発生してしまいます。 具体的には、DataGridViewをListBoxのように使っておりまして、 選択行が変わる度にPictureBoxにサムネイル画像を一覧表示しています。 例えば、エクスプローラーではフォルダツリーでフォルダを選択すると、 現在表示中の画像のサムネイル表示処理が中断され、 すぐに新しく選択されたフォルダの表示に処理が写りますよね。 あのような動作が理想です。 ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ DataGridViewの選択セルが変わると、サムネイル表示メソッドを実行 ↓呼び出すメソッド Private sub ShowThumb() For ・・・(100枚ぐらい) 処理A) PictureBoxにGraphics.DrawImageでサムネイルを描画 処理B) サムネイル1枚1枚の下に、Label作成 'DataGridViewの選択セルが変更されるとキャンセルフラグが立つ If flag_cancel = True Then Exit For '(新しく選択されたセルの値でメソッドが実行されなおす) End If Application.DoEvents() ’←ここで例外が発生します。 Next End Sub 'System.InvalidOperationException' の初回例外が System.Windows.Forms.dll で発生しました。 SetCurrentCellAddressCore 関数への再入呼び出しを生じるため、この操作は有効ではありません。 ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ 実際にはもっと複雑ですが、簡単に書くとこのような感じです。 別スレッドでループをさせるなどをすれば解決できるでしょうか。 まだVBを始めて間もないので、別スレッドというのは難しくて自信がないのですが・・。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.