动态系统托盘图标
Posted feiyucha
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态系统托盘图标相关的知识,希望对你有一定的参考价值。
实现效果:
知识运用:
TcpListener TcpClient 和 NetworkStream类 及 Timer组件
1> TcpListener类 //用来从Tcp网络客户端侦听连接
2> TcpClient类 //为Tcp网络服务提供客户端连接
public TcpClient(string hostname,int port) //远程主机的DNS名 端口号
3> NetworkStream类 //提供在阻止模式下通过Stream套接字发送和接受数据的方法
//其Read方法用于从NetworkStream类读取数据
public override int Read(byte[] buffer,int offset,int size)
4> notifyIcon控件的Icon属性
实现代码:
//声明变量 private Thread td; private string message = ""; private TcpListener tcpListener; //监听方法 private void startListen() { tcpListener = new TcpListener(999); tcpListener.Start(); while (true) { TcpClient client = tcpListener.AcceptTcpClient(); NetworkStream netStream = client.GetStream(); byte[] bt=new byte[1024]; netStream.Read(bt,0,bt.Length); message = Encoding.Default.GetString(bt); } } //发送消息 private void button1_Click(object sender, EventArgs e) { TcpClient client = new TcpClient(textBox1.Text,999); string msg = "嗨,你好! 南极鱼"; NetworkStream netStream = client.GetStream(); StreamWriter sw = new StreamWriter(netStream); sw.WriteLine(msg); sw.Flush(); sw.Close(); client.Close(); } //初始化 private void Form1_Load(object sender, EventArgs e) { td = new Thread(new ThreadStart(startListen)); td.Start(); timer1.Start(); } //清理工作 private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (td.ThreadState == ThreadState.Running) td.Abort(); if (tcpListener != null) tcpListener.Stop(); } //定时检查有无消息 bool flag; private void timer1_Tick(object sender, EventArgs e) { if (message.Length > 0) { if(flag) { notifyIcon1.Icon = Properties.Resources._1; flag = false; } else { notifyIcon1.Icon = Properties.Resources._2; flag = true; } } } //停止闪烁 private void button2_Click(object sender, EventArgs e) { message = ""; notifyIcon1.Icon = Properties.Resources._3; }
以上是关于动态系统托盘图标的主要内容,如果未能解决你的问题,请参考以下文章