关于messagebox信息显示2次的问题

小D2013 2008-11-03 12:56:42
各位,我作了一个程序,用messagebox显示得到的信息,得到的信息是类似:*ST0010001192.168.001.001:8080......这样的信息,但是用messagebox.show()方法,他会先显示一个框里边有*ST192.168.001.,然后点确定后,他会再弹出一个提示框显示剩下的信息,这是怎么回事?怎么能让他一次显示出来?
...全文
303 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
meijianyu 2008-11-03
  • 打赏
  • 举报
回复
没有听明白,
单步运行一下看看。
techsky 2008-11-03
  • 打赏
  • 举报
回复
可以 设置一个静态变量,用以保存接收到的字节。

static System.Text.StringBuilder mybuile;


然后在接收事件中判断一组有效字数据的起始与终止标志,并截取这段数据显示(MessageBox)
这个起始和终止的标志就需要你自己来确定了
小D2013 2008-11-03
  • 打赏
  • 举报
回复
对了,正如楼上所说,我改大了之后,显示的就长了,但是我每回接收的数据包长度是不定的,设置的大了不会触发receive事件,而太小了又会分两次显示,这个怎么办呢?
techsky 2008-11-03
  • 打赏
  • 举报
回复
查一下 是否 serialPort1_DataReceived 被执行了两次?
感觉你写的是个串口(并口)的接收事件,若是找找触发接收事件的字节的长度设置不够长?
小D2013 2008-11-03
  • 打赏
  • 举报
回复
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{

while (serialPort1.BytesToRead > 0)
{
int i = serialPort1.BytesToRead;
byte[] bytes = new byte[i];
serialPort1.Read(bytes, 0, i);
//添加到临时包中
for (int m = 0; m < bytes.Length; m++)
{
arr.Add(bytes[m]);
}



}
StringBuilder mybuile = new StringBuilder();
foreach (byte b in arr)
{
mybuile.Append(Convert.ToChar(b));
}
//注意,在这里得到的字符串:*ST0010001192.168.001.001:8080.。。。在下边分两次显示
arr.Clear();
MessageBox.Show("返回:"+mybuile.ToString()+"。");


}
xxyping 2008-11-03
  • 打赏
  • 举报
回复
估计是这样的
devilli 2008-11-03
  • 打赏
  • 举报
回复
楼主的意思是要显示的内容很多?一次显示不完?
wojiushiliumang 2008-11-03
  • 打赏
  • 举报
回复
贴代码...

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧