最近学C#,用C#写serialport遇到了一点小问题记录一下。
问题一:
if (!string.IsNullOrEmpty(filePath.ToString())) { try { fs = new FileStream( Encoding.UTF8.GetString(Encoding.Default.GetBytes(filePath)), FileMode.Open, FileAccess.Read); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
filePath为文件路径,当遇到中文时会乱码,解决办法:用
Encoding.UTF8.GetString(Encoding.Default.GetBytes(filePath))转换一下,则乱码问题会解决掉。 问题二(添加进度条):需要开一个新的线程
步骤1:定义一个delegate
private delegate void SetPos(int ipos);
步骤2:进度值更新函数
private void SetTextMessage(int ipos) { if (this.InvokeRequired) { SetPos setpos = new SetPos(SetTextMessage); this.Invoke(setpos, new object[] { ipos }); } else { this.label.Text = ipos.ToString() + "%"; this.progressBar1.Value = Convert.ToInt32(ipos); this.label1.Text = "已下载"; if (!isPackWriten) { this.label1.Text = "完成"; } } }
步骤3:线程执行函数
private void SleepT() { for (int i = 0; i < 500; i++) { System.Threading.Thread.Sleep(65); SetTextMessage(100 * i / 500); } }
步骤4:开启线程
Thread fthread = new Thread(new ThreadStart(SleepT)); fthread.Start();