Daytip工程

来源:互联网 发布:linux 调整音量 编辑:程序博客网 时间:2024/05/16 00:36

学习一门语言的最好的方法就是多写代码,但老是抄例子也容易烦.,最好就是自己想一些小工程来做,做完了,又熟悉了语言,又能解决一些小问题,或者给生活带来乐趣.

DayTip. 

思路:每天到服务器获取祝福并显示.因为属于提示类的小东西,使用notifyicon做出来比较好看.同时添加右键菜单.

部分代码:

  //帮助,关于选项
  private void menuItem4_Click(object sender, System.EventArgs e)
  {
   string strMsgInfo = "从第一个c#版的[HelloWorld]到这个[DayTip],7天时间!/r/n说掌握了一门语言有点夸张,但至少开了一个好头,也给自己打了点气:只要专心去做,就会做得精彩!/r/n好样的!!呵呵```~~/r/n/r/n本程序送给小梅子以及所有我的朋友她的朋友,祝所有人天天开心,好运相伴。/r/n有留言、祝福请email给我。";
   MessageBox.Show(strMsgInfo,"天天好心情!");
  }

  //关闭选项
  private void button3_Click(object sender, System.EventArgs e)
  {
   this.Close();
  }

  //初始化界面
  private void TrayIcon_Load(object sender, System.EventArgs e)
  {
   GetDayBless(); //显示当日祝福
   SetRightBottom(); //设置窗口位置
   menuItem1_Click(sender, e); //显示窗口
   hidetimer.Enabled = true; //开始隐藏计时
  }
  //设置程序位置在右下角
  private void SetRightBottom()
  {
   Rectangle rt = new Rectangle();
   rt = Screen.GetWorkingArea(rt);
   Point ptSet = new Point(rt.Width-160, rt.Height-120);
   this.DesktopLocation = ptSet;
  }
  //从服务器上下载祝福
  private void GetDayBless()
  {
   //download the bless file
   try{
    Stream data = client.OpenRead("http://127.0.0.1/bless.txt");
    StreamReader reader = new StreamReader(data);
    byte[] mybyte = new byte[20*1024];
    int allbyte = (int)mybyte.Length;
    int startbyte = 0;
    while (allbyte>0)
    {
     int n = data.Read(mybyte, startbyte, allbyte);
     if(n == 0){
      break;
     }
     allbyte-=n;
     startbyte+=n;
    }
    //转换成string,在string中查找当日的祝福字串
    System.Text.Encoding encoding = System.Text.Encoding.Default;
    string strAllTip = encoding.GetString(mybyte);
    string strTodayTip = GetTodayTip(strAllTip);
    g_strTodayTip = strTodayTip; //保存当日提示
    richTB.Text = strTodayTip;
    data.Close();
   }
   catch{
    return;
   }
  }
  //查找当日祝福
  private string GetTodayTip(string strAll)
  {
   //构造日期  05-23 的形式,注意小于10的用0补足。
   int iMonth = DateTime.Today.Month;
   int iDay = DateTime.Today.Day;
   string TimeString = "";
   TimeString = (iMonth<10)?"0"+iMonth.ToString():iMonth.ToString();
   TimeString += "-"+((iDay<10)?"0"+iDay.ToString():iDay.ToString());
   
   //寻找当日字串([05-23=xxxxxx]的形式, 以']'为结束符。)
   int iIndex = strAll.IndexOf(TimeString);
   int iEnd = strAll.IndexOf("]", iIndex);
   string TodayTip = strAll.Substring(iIndex+6, iEnd-iIndex-6);
   return TodayTip;
  }

  //隐藏窗口时间到(退出提示,关闭隐藏定时器)
  private void hidetimer_Tick(object sender, System.EventArgs e)
  {
   richTB.Text = "/n/n/n程序将在一分钟后退出.";
   hidetimer.Enabled = false;
   exittip.Enabled = true;
  }
  //退出时间到(关闭退出定时器,退出程序)
  private void exittimer_Tick(object sender, System.EventArgs e)
  {
   exittimer.Enabled = false;
   this.Close();
  }
  //退出提示时间到(关闭提示定时器,开启退出定时器,隐藏窗口)
  private void exittip_Tick(object sender, System.EventArgs e)
  {
   if(this.Visible)
   {
    this.Hide();
   }
   richTB.Text = g_strTodayTip;
   exittip.Enabled = false;
   exittimer.Enabled = true;
  }

从网站上下载bess.txt文件,在内存数据流中读出[05-23=xxxxxx]形式的字串, 以']'为结束符。

程序太简单,不多说了.

原创粉丝点击