弹出对话框显示数据,不弹出不显示

qq1965868789 2011-10-22 09:11:57
我现在做的一个电子秤串口程序。就是把称出来的数据显示在窗体上,在保存在Excel里面。
现在问题是我在接收数据的时候用MessageBox.Show(a)弹出接收的数据(a是接收的数据) 它就会显示在窗体上面。
如果不用MessageBox.Show(a) 它就不会显示在窗体上面。请问这是什么问题?
#region 打开串口
private void btnStart_Click(object sender, EventArgs e)
{
if (StartBool == false)
{
try
{
this.ClosingBool = false;//是否正在关闭串口
this.Listening = false;//是否正在接收数据
this.StartBool = true;

this.txtReceiveData.Text = "";
this.serialPort1.PortName = "COM1";
this.serialPort1.BaudRate = 9600;
this.serialPort1.DataBits = 8;
this.serialPort1.Parity = System.IO.Ports.Parity.None;
this.serialPort1.StopBits = System.IO.Ports.StopBits.One;

if (this.serialPort1.IsOpen == false)
{
this.serialPort1.Open();
MessageBox.Show("打开串口成功!");
this.btnStop.Enabled = true;
this.btnStart.Enabled = false;
}
}
catch
{
if (this.serialPort1.IsOpen == true)
{
this.serialPort1.Close();
}
MessageBox.Show("打开串口失败");
}
}
}
#endregion

#region 读取数据
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (ClosingBool) return; //如果正在关闭,忽略关闭操作,尽快的完成本次数据的读取
try
{
Listening = true; //设置标记,说明我现在开始读取数据
int n = this.serialPort1.BytesToRead;
byte[] buf = new byte[n];
this.serialPort1.Read(buf, 0, n);
this.txtReceiveData.Invoke((EventHandler)(delegate
{
string receiveData = Encoding.ASCII.GetString(buf);
string[] aaa = receiveData.Split(new char[] { '\n' });
//MessageBox.Show(receiveData.ToString());
if (receiveData.Length == 8)
{
Data2 = "DATA:20";
}
if (aaa.Length == 6 && receiveData.Contains("NW:") && aaa[3].Contains(".")==true)
{
Data = Data2 + aaa[0].ToString();
NO = aaa[1].ToString();
GW = aaa[2].ToString();
NW = aaa[3].ToString();

DataRow d = dtable.NewRow();
d["Data"] = Data;
d["NO"] = NO;
d["GW"] = GW;
d["NW"] = NW;
dtable.Rows.Add(d);
}

if (Data.Contains("DATA:") == true && Data.Length > 5)
{
this.txtReceiveData.AppendText("DATA:" + Data.Substring(5, Data.Length - 5) + "\n");//2001-02-02
}
if (NO.Contains("NO:") == true && NO.Length > 3)
{
this.txtReceiveData.AppendText("NO:" + NO.Substring(3, NO.Length - 3) + "\n");
}
if (GW.Contains("GW:") == true && GW.Length > 3)
{
this.txtReceiveData.AppendText("GW:" + GW.Substring(3, GW.Length - 3) + "\n");
}
if (NW.Contains("NW:") == true && NW.Length > 3)
{
this.txtReceiveData.AppendText("NW:" + NW.Substring(3, NW.Length - 3) + "\n");//NW:3.113
}
Data = "";
NO = "";
NW = "";
GW="";
}));
}
catch
{
MessageBox.Show("读取数据异常!");
}
finally
{
Listening = false; //设置标记,说明我本次数据读取完毕
}
}
#endregion

#region 关闭端口
private void btnStop_Click(object sender, EventArgs e)
{
if (this.serialPort1.IsOpen)
{
while (Listening) Application.DoEvents();
this.serialPort1.Close();
if (this.serialPort1.IsOpen == false)
{
MessageBox.Show("端口已关闭!");
this.txtReceiveData.Text = "";
this.btnStart.Enabled = true;
}
dtable.Clear();
}
this.serialPort1.Dispose();
StartBool = false;
ClosingBool = true;
}
#endregion

#region 加载
private void Form1_Load(object sender, EventArgs e)
{
this.btnStop.Enabled = false;
dtable = new DataTable();
dtable.Columns.Add("Data", typeof(string));
dtable.Columns.Add("NO", typeof(string));
dtable.Columns.Add("GW", typeof(string));
dtable.Columns.Add("NW", typeof(string));
}
#endregion

求高手指教,帮帮忙找下错误
...全文
218 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
萧炎 2011-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qq1965868789 的回复:]
我现在问题就是这样。我问了别人 别人说MessageBox.Show()相当于一个断点 具体什么我也不知道
反正现在我就是这样用MessageBox.Show()就会显示 不用就不显示

引用 3 楼 zyloveyrf 的回复:
引用 2 楼 qq1965868789 的回复:
我也不知道啊 问题就是我用MessageBox.Show(a) 它就会有数据显示在窗体上,不用就没有数据。
……
[/Quote]
我糊涂了 你的意思是MessageBox.Show 会显示数据 不用不显示数据 但是数据还是有的对不?

MessageBox.Show是相当于一个断点 也就是F10的功能

意思就是检查a的值的意思

qq1965868789 2011-10-22
  • 打赏
  • 举报
回复

我现在问题就是这样。我问了别人 别人说MessageBox.Show()相当于一个断点 具体什么我也不知道
反正现在我就是这样用MessageBox.Show()就会显示 不用就不显示
[Quote=引用 3 楼 zyloveyrf 的回复:]
引用 2 楼 qq1965868789 的回复:
我也不知道啊 问题就是我用MessageBox.Show(a) 它就会有数据显示在窗体上,不用就没有数据。



引用 1 楼 zyloveyrf 的回复:
如果不用MessageBox.Show(a) 它就不会显示在窗体上面。请问这是什么问题?
--------------------------------------------……
[/Quote]
萧炎 2011-10-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq1965868789 的回复:]
我也不知道啊 问题就是我用MessageBox.Show(a) 它就会有数据显示在窗体上,不用就没有数据。



引用 1 楼 zyloveyrf 的回复:
如果不用MessageBox.Show(a) 它就不会显示在窗体上面。请问这是什么问题?
--------------------------------------------------------------
Messag……
[/Quote]
什么意思?
不用MessageBox.Show 数据就为空?
用MessageBox.Show这个 数据就不为空?
怎么可能啊 MessageBox.Show和数据为空不为空压根就没关系啊
qq1965868789 2011-10-22
  • 打赏
  • 举报
回复
我也不知道啊 问题就是我用MessageBox.Show(a) 它就会有数据显示在窗体上,不用就没有数据。


[Quote=引用 1 楼 zyloveyrf 的回复:]
如果不用MessageBox.Show(a) 它就不会显示在窗体上面。请问这是什么问题?
--------------------------------------------------------------
MessageBox.Show是一个提示框,也就是提示或者显示消息的 如果你不用提示框显示你的a
也可以用数据容器来显示,比如datagridview

你的a相当于一个丑闻……
[/Quote]
萧炎 2011-10-22
  • 打赏
  • 举报
回复
如果不用MessageBox.Show(a) 它就不会显示在窗体上面。请问这是什么问题?
--------------------------------------------------------------
MessageBox.Show是一个提示框,也就是提示或者显示消息的 如果你不用提示框显示你的a
也可以用数据容器来显示,比如datagridview

你的a相当于一个丑闻,而数据容器相当于媒体,需要媒体才能把丑闻报道出来

110,534

社区成员

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

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

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