我嘗試在onPaint()
方法中使用DrawString()
方法顯示字符串,具體取決於另一個方法中的標誌。 我沒有正確顯示它,因爲它看起來很快就消失了!如何在C#中使用DrawString()方法或MessageBox()而不使用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();
}
}
_Is有任何其他方式即__without__使用的DrawString()_爲什麼呢?因爲你第一次嘗試失敗了?爲什麼不使用定時器? – TaW
我用Thread.Sleep(3000)! – Rose
我知道。但是我不知道你的Draw代碼的外觀。你所做的是哪個線程等待。 UI線程?一個壞主意,凍結程序.. – TaW