C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

PictureBoxとMsgBoxが同時に使えない

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■88250 / inTopicNo.1)  PictureBoxとMsgBoxが同時に使えない
  
□投稿者/ ビーズ (1回)-(2018/08/14(Tue) 19:47:11)

分類:[.NET 全般] 

VB2017です。

フォームを一つ作成し、
PictureBox1を一つ配置します。
そして、




Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint

Dim canvas As New Bitmap(PictureBox1.Width, PictureBox1.Height)

PictureBox1.Image = canvas

End Sub

というコードを書きます。

本当はここで画を描きたいのですが
問題切り分けのため、削除しています。

そして一つButtonを配置し
その中に
Msgbox("test")
と書きます。

この状態でButtonを押してメッセージボックスを表示しようとすると
フォームがフリーズしてしまいます。

上の
PictureBox1.Image = canvas
の部分だけコメントアウトすると
正常に表示されます。

一体どうすれば
PictureBoxとMsgBoxを同時に使うことができますか?

引用返信 編集キー/
■88251 / inTopicNo.2)  Re[1]: PictureBoxとMsgBoxが同時に使えない
□投稿者/ Hongliang (671回)-(2018/08/14(Tue) 20:09:55)
Paintイベント中にImageプロパティを設定するのは誤りです。

・画像を変更したい時(ボタンクリック時とか、タイマ満了時とか)に、新しいBitmapオブジェクトをPictureBox::Imageプロパティに設定する。
 PictureBox::Paintイベントは記述しない。

・PictureBox::Paintイベントにて、e.Graphics.DrawImageなどで描画する。
 PictureBox::Imageプロパティは使用しない。

どちらかの方法を使用して下さい。
引用返信 編集キー/
■88252 / inTopicNo.3)  Re[2]: PictureBoxとMsgBoxが同時に使えない
□投稿者/ ビーズ (2回)-(2018/08/14(Tue) 20:41:44)
ありがとうございます。
うまくいきました。

二つ目の方法の場合、

変更したい箇所に毎回
PictureBox1.Invalidate()

を書き入れる必要がありますか?

引用返信 編集キー/
■88253 / inTopicNo.4)  Re[3]: PictureBoxとMsgBoxが同時に使えない
□投稿者/ Hongliang (672回)-(2018/08/14(Tue) 20:44:38)
> 二つ目の方法の場合、
>
> 変更したい箇所に毎回
> PictureBox1.Invalidate()
>
> を書き入れる必要がありますか?

そうですね。
画像を変更したい時(ボタンクリック時とか、タイマ満了時とか)に、PictureBox::Invalidate()を呼び出す。
です。
引用返信 編集キー/
■88254 / inTopicNo.5)  Re[4]: PictureBoxとMsgBoxが同時に使えない
□投稿者/ ビーズ (4回)-(2018/08/14(Tue) 20:55:57)
ありがとうございます。
了解しました!!!!!

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ