我尝试在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