PictureBoxに座標を書いておきたいのですが、Form1_Shown、Form1_Activated、どちらも間に合わないのか表示されません。MessageBox.Show(" Shownイベント")で止めてやると表示できます。System.Threading.Thread.Sleep(5000)を入れてみましたがダメでした。原因と対策を教えてください。実行ファイルでも同じでした。
>MessageBox.Show(" Shownイベント")で止めてやると表示できます。
その状態で、メモ帳など別のアプリのウィンドウを上に重ねた後、そのウィンドウを
取り除くと描画が消えませんか?消えるなら、再描画を考慮できていないことになります。
通常、コントロールへの描画はPaintイベントを利用します。
「C# picturebox 描画 消える」のキーワードでWEB検索に引っ掛かる内容を確認して下さい。
とめさん
アドバイスありがとうございます。
別のアプリ(Firefox)のウィンドウを上に重ねた後、そのウィンドウを取り除いても描画が残っています。
あきらめて描画ボタンを設けてしのいだのですが、こんどはTextboxでも同じようなことが起こって困っています。
VS2019のVBで測定プログラムを作っています。私、VBは初心者です。
インターバルをおいて電圧変化させたいのですが、タイマーを入れるとTextboxが更新されず、最後の値だけが表示されます。
System.Threading.Thread.Sleep(1000) と ネット検索で見つけたWait(500)関数も試しました。
表示先のTextBox14内へもタイマーを入れてみましたが同じ結果でした。
Console出力はタイマーの前に変化しますが表示が変わりません。
何か根本が間違っているんだと思うのです。
結構時間を費やしているので、もう一日ダメだったら端末にタイマーを入れようかと悩んでいます。
Private Sub TextBox14_TextChanged(sender As Object, e As EventArgs) Handles TextBox14.TextChanged
Console.WriteLine(TextBox14.Text)
Wait(1000)
'MessageBox.Show(TextBox14.Text)
Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
Dim i As Integer
For i = 0 To LastMeasVoltNo
'System.Threading.Thread.Sleep(1000)
'Wait(500)
TextBox14.Text = MeasVolt(i + 1)
'MessageBox.Show(MeasVolt(i))
Next
End Sub
Private Sub Wait(ByVal waittime As Long)
Dim starttime As Long
starttime = timeGetTime()
Do While timeGetTime() - starttime < waittime
Loop
End Sub
描画の前へ、PictureBox1.Update()
TextBoxは後へTextBox14.Update()
を入れるといい感じで表示できました。
ツイート | ![]() |