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)
{
}
}
}