.net+winform的工程 使用StreamReader和StreamWriter 動態寫數據的功能

The first example(QuotesViewer_V1.0):
1.use VisoStudio create a WinForm project.
2.創建一個dataGridView控件 併爲其綁定數據。
3.用StreamReader來接受數據 使用StreamWriter來發送數據。
4.動態刷新的效果。
參考地址:
http://blog.csdn.net/a497785609/archive/2010/05/02/5550739.aspx
下面就是全部的啦:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Windows.Forms;
using System.Threading;
using System.Net;
using System.IO;

namespace QuotesViewer
{
    public partial class Form1 : Form
    {
        StreamReader streamReader = null;
        StreamWriter streamWriter = null;
        TcpClient tcpClient;
        Thread threadReceive;
        public DataTable dt = null;
        delegate void UpdateMsg(string msg);
        public Form1()
        {
            InitializeComponent();
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            InitTable();
        }

        private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void bindingSource1_CurrentChanged(object sender, EventArgs e)
        {

        }

        private DataTable CreateDataSource()
        {

            DataRow dr = null;
            DataRow dr2 = null;
            dr = dt.NewRow();
            dr[0] = "1";
            dr[1] = "Simple";
            dr[2] = "A simple use of DataGrid control";
            dr[3] = "A simple use of DataGrid control";
            dt.Rows.Add(dr);

            // dr2 = dt.Rows.Find(dr[0]);
            //if (dr2 == null)
            //{
            //add new row
            // }
            // else
            // {
            //update row
            // }
            return dt;
        }

        private void InitTable()
        {
            dt = new DataTable();
            dt.Columns.Add(new DataColumn("SYMBOL", typeof(string)));
            dt.Columns.Add(new DataColumn("BID", typeof(string)));
            dt.Columns.Add(new DataColumn("ASK", typeof(string)));
            dt.Columns.Add(new DataColumn("QuoteTime", typeof(string)));
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void check_Click_1(object sender, EventArgs e)
        {
            try
            {
                String ip_port = textBox_ip_port.Text;
                String[] ipArray = ip_port.Split(new char[] { ':' });
                String ip = ipArray[0].ToString();
                String port = ipArray[1].ToString();

                tcpClient = new TcpClient(ip, Convert.ToInt16(port));
                NetworkStream networkStream = tcpClient.GetStream();
                streamReader = new StreamReader(networkStream);
                streamWriter = new StreamWriter(networkStream);
                try
                {
                    streamWriter.WriteLine("kdf/r/n");
                    streamWriter.WriteLine("kdf/r/n");
                    streamWriter.Flush();
                    string sTmp = streamReader.ReadLine();
                    threadReceive = new Thread(new ThreadStart(StartReceive));
                    threadReceive.Start();
                }
                catch
                {
                    streamReader.Close();
                    streamWriter.Close();
                    networkStream.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void StartReceive()
        {
            while (true)
           {
                try{
                    receiveMsg(streamReader.ReadLine());
                }catch(Exception ex)
                {
                    return;
                }
            }
        }

        private void receiveMsg(string msg)
        {
            try
            {

                if (this.InvokeRequired)
                {
                    {
                        UpdateMsg um = new UpdateMsg(receiveMsg);
                        Invoke(um, new object[] { msg });
                    }
                }
                else
                {
                    string strTmp = msg;
                    string[] strBuff = strTmp.Split(' ');
                    if (strBuff.Length < 3)
                        return;

                    if (strBuff.Length >= 3)
                    {
                        System.DateTime currentTime = new System.DateTime();
                        currentTime = System.DateTime.Now;
                        String showD = currentTime.Hour + ":" + currentTime.Minute + ":" + currentTime.Second + "." + currentTime.Millisecond;
                        bool bfind = false;

                        foreach (DataGridViewRow dr in quoteTable_dataGridView.Rows)
                        {
                            dr.Cells[0].Style.Font = new Font("微軟雅黑", 10, FontStyle.Regular);
                            if (dr.Cells[0].Value != null && dr.Cells[0].Value.ToString().Trim() == strBuff[0].Trim())
                            {
                                DataGridViewCell dc3 = dr.Cells[3];
                                setNewValue(dr.Cells[1], Convert.ToDouble(strBuff[1]), showD, dc3);
                                setNewValue(dr.Cells[2], Convert.ToDouble(strBuff[2]), showD, dc3);
                                //setNewValue(dr.Cells[3], 0d,showD);

                                dr.Cells[1].Value = strBuff[1];
                                dr.Cells[2].Value = strBuff[2];
                                //dr.Cells[3].Value = showD;
                                bfind = true;
                                break;
                            }
                        }

                        if (bfind == false && strBuff.Length >= 3)
                        {
                            quoteTable_dataGridView.Rows.Add(new string[] { strBuff[0].Trim(), strBuff[1], strBuff[2], showD });

                            quoteTable_dataGridView.Rows[quoteTable_dataGridView.Rows.Count - 1].Selected = true;
                        }

                    }
                }
            }
            catch (Exception ex)
            {
                return;
            }

        }

        private void setNewValue(DataGridViewCell dcOld, double newPrice, String showD, DataGridViewCell dr)
        {
            //dcOld.Style.Font = new Font("微軟雅黑", 10, FontStyle.Bold);
            if (newPrice < Convert.ToDouble(dcOld.Value))
            {
                //dcOld.Style.BackColor = Color.Red;
                dcOld.Style.Font = new Font("微軟雅黑", 10, FontStyle.Bold);
                dr.Style.Font = new Font("微軟雅黑", 9, FontStyle.Bold);
                dr.Style.ForeColor = Color.Red;
                dcOld.Style.ForeColor = Color.Red;
                dr.Value = showD;
            }
            else
            {
                if (newPrice > Convert.ToDouble(dcOld.Value))
                {
                    dcOld.Style.ForeColor = Color.Green;
                    dr.Style.Font = new Font("微軟雅黑", 9, FontStyle.Bold);
                    dr.Style.ForeColor = Color.Green;
                    dr.Value = showD;
                }
                else
                {
                    dcOld.Style.Font = new Font("微軟雅黑", 10, FontStyle.Bold);
                    dr.Style.Font = new Font("微軟雅黑", 9, FontStyle.Bold);
                    //dcOld.Style.ForeColor = Color.Blue;
                    //dcOld.Style.ForeColor = Color.White;
                }
            }

        }

        private void disconnect_Click(object sender, EventArgs e)
        {
            try
            {
                if (streamReader != null)
                {
                    streamReader.Close();
                }
                if (streamWriter != null)
                {
                    streamWriter.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //ckbReceiveMode.Checked = false;

            disconnect_Click(this, new EventArgs());

            if (threadReceive != null && threadReceive.ThreadState != ThreadState.Stopped)
            {
                threadReceive.Abort();
            }
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }
    }
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章