メソッドを使って文字列を別のメソッドのフラグに応じてonPaint()
メソッドで表示しようとしました。 表示されているとおりに正しく表示できませんでした。C#でDrawString()メソッドやMessageBox()を使わずにFormやPictureBoxに文字列を表示する方法
このようなメッセージを表示または描画するために、DrawString()
またはMessageBox()
を使用しない他の方法がありますか。
私はThread.Sleep()
を使用しました。 onPaint()
インサイド
:
if(auvSend == true) {
base.OnPaint(e);
g.DrawString("Received Aggrigated Data from AUV # " + auv[auvSenderID].auvID, font,auvSendMsg, 500, 36); // Display that the sink receive data from the AUV
MessageBox.Show("Received Aggrigated Data from AUV # " + auv[auvSenderID].auvID);
player.Play();
Thread.Sleep(3000);
g.DrawImage(new Bitmap("C:/temp/temp.png"), 500, 36, 196, 16);// clear
player.Stop();
auv[auvSenderID].queue1.Clear();
auvSend = false;
}
それがバックグラウンドでフラグの値を変更するには、特定の番号が含まれている場合、私は配列リストを確認し、作業方法を実行します。十分なコンテキストがありません
if (moveBtnIsClicked == false && movebtnGeneticIsClicked == false)
{
if (auv[0].queue1.Count == 10)
{
foreach (Packet packet in auv[0].queue1)
{
auv[0].SendToSink(packet);
}
auvSenderID = 0;
auvSend = true;
topology.Invalidate();
}
if (auv[1].queue1.Count == 10)
{
foreach (Packet packet in auv[1].queue1)
{
auv[1].SendToSink(packet);
}
auvSenderID = 1;
auvSend = true;
topology.Invalidate();
}
if (auv[2].queue1.Count == 10)
{
foreach (Packet packet in auv[2].queue1)
{
auv[2].SendToSink(packet);
}
auvSenderID = 2;
auvSend = true;
topology.Invalidate();
}
if (auv[3].queue1.Count == 10)
{
foreach (Packet packet in auv[3].queue1)
{
auv[3].SendToSink(packet);
}
auvSenderID = 3;
auvSend = true;
topology.Invalidate();
}
}
_ DrawingString()を使用して__without__を使用する方法はありますか?あなたの最初の試みで失敗したので?タイマーを使わないのはなぜですか? – TaW
私はThread.Sleep(3000)を使用しました! – Rose
私は知っています。しかし、私はあなたの描画コードがどのように見えたのか分かりません。あなたが待っていたスレッドもありません。 UIスレッド?プログラムをフリーズするのは悪い考えです。 – TaW