⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainform.cs

📁 一个天气预报程序
💻 CS
字号:
/*
 * ? SharpDevelop ???
 * ??: Administrator
 * ??: 2007-12-31
 * ??: 12:47
 * 
 * ??????????,??????? | ?? | ?? | ???????
 */

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;

namespace MyTools
{
	/// <summary>
	/// Description of MainForm.
	/// </summary>
	public partial class MainForm : Form
	{
		[STAThread]
		public static void Main(string[] args)
		{
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);
			Application.Run(new MainForm());
		}
		//MyVar
		Hashtable hash;
		public MainForm()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		
		void Button1Click(object sender, EventArgs e)
		{
			timer1.Enabled = true;
		}
		
		void Timer1Tick(object sender, EventArgs e)
		{
			TimeLabel.Text = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second + "\n";
			//DateLabel.Text = DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day;
			//TimeLabel.Text += DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day;
		}
		
		void MainFormLoad(object sender, EventArgs e)
		{
			if(!File.Exists("info.dat"))
				return;
			FileStream fileStream = new FileStream("info.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
			BinaryFormatter b=new BinaryFormatter();
			try
			{
				hash =(Hashtable)b.Deserialize(fileStream);
			}
			catch
			{
				hash = new Hashtable();
			}
			fileStream.Close();
			timer1.Enabled = true;
			
			IpLabel.Text = GetIp();
			
			CityLabel.Text = GetWeather(@"g>",@"</");
			
			WeatherLabel.Text = GetWeather(@"天气:",@",紫");
			LunarLabel.Text = LunDay.GetLunarCalendar(dateTimePicker1.Value);
		}
		
		void Button3Click(object sender, EventArgs e)
		{
			OpForm of = new OpForm(ref hash);
			of.Text = "OptionForm";		
			of.Show();
		}
		
		void Button4Click(object sender, EventArgs e)
		{
			bool b = File.Exists(PathBox.Text);
			if(PathBox.Text == "" && TempNameBox.Text == "")
			{
				PathBox.Focus();
				return;
			}
				
			if(b)
			{
				try
				{
					hash.Add(TempNameBox.Text,PathBox.Text);
				}
				catch
				{
					MessageBox.Show("添加失败,请值是否重复");
					return;
				}
				MessageBox.Show("添加成功");
			}
		}
		
		void Button2Click(object sender, EventArgs e)
		{
			if(textBox1.Text == "")
				return;
			if(hash[textBox1.Text] == null)
			{
				return;
			}
			Process.Start((string)hash[textBox1.Text]);
		}
		
		void MainFormFormClosing(object sender, FormClosingEventArgs e)
		{
			FileStream fs = new FileStream(@"info.dat", FileMode.Create);
		 	BinaryFormatter formatter = new BinaryFormatter();
		 	try
		 	{
		 		formatter.Serialize(fs, hash);
		 	}
		 	finally
		 	{
		 		fs.Close();
		 	}
		}
		
		string GetIp()
		{
		  	Uri uri = new Uri("http://www.ikaka.com/ip/index.asp");//查本机网络IP的网页
			HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
			req.Method = "POST";
			req.ContentType = "application/x-www-form-urlencoded";
			req.ContentLength = 0;
			req.CookieContainer = new CookieContainer();
			req.GetRequestStream().Write(new byte [0], 0, 0);
			HttpWebResponse res = (HttpWebResponse)(req.GetResponse());
			StreamReader rs = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("GB18030"));
			string s = rs.ReadToEnd();
			rs.Close();
			req.Abort();
			res.Close();
			Match m = Regex.Match(s, @"IP:\[(?<IP>[0-9\.]*)\]");
			if (m.Success) return m.Groups["IP"].Value;
			string strnetIP= string.Empty;
			return strnetIP;
		  }
		
	 	static string GetWeather(string s1,string s2)
		{
			string ResponseText;
			string temp;
			int startIndex;
			int endIndex;
			Uri url= new Uri(@"http://firetear.com/weather/lvweather.aspx");
			HttpWebRequest hwReq = (HttpWebRequest)WebRequest.Create(url); 
			HttpWebResponse hwRes = (HttpWebResponse)hwReq.GetResponse(); 
			hwReq.Method = "Post"; 
			StreamReader ReaderText = new StreamReader(hwRes.GetResponseStream(),Encoding.UTF8); 
			//ResponseText = ReaderText.ReadLine() ; 
			ResponseText = ReaderText.ReadToEnd(); 
			hwRes.Close(); 
			startIndex = ResponseText.IndexOf(s1) + s1.Length;
			endIndex = ResponseText.IndexOf(s2);
			temp = ResponseText.Substring(startIndex,endIndex - startIndex);
			//temp = ResponseText.Substring(startIndex + 1,endIndex -1 - startIndex);
			
			//return ResponseText;
			return temp;
		}
		
		void DateTimePicker1ValueChanged(object sender, EventArgs e)
		{
			try
			{
				LunarLabel.Text = LunDay.GetLunarCalendar(dateTimePicker1.Value);
			}
			catch
			{
				dateTimePicker1.Value = DateTime.Now;
				LunarLabel.Text = LunDay.GetLunarCalendar(dateTimePicker1.Value);
			}
		}
		
		void GroupBox1Enter(object sender, EventArgs e)
		{
			
		}
	}
	
	public class LunDay 
{ 
public LunDay() 
{ 
// 
// TODO: 在此处添加构造函数逻辑 
// 
} 
//天干 
private static string []TianGan = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"}; 

//地支 
private static string []DiZhi = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"}; 

//十二生肖 
private static string []ShengXiao = {"鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"}; 

//农历日期 
private static string []DayName = {"*","初一","初二","初三","初四","初五", 
"初六","初七","初八","初九","初十", 
"十一","十二","十三","十四","十五", 
"十六","十七","十八","十九","二十", 
"廿一","廿二","廿三","廿四","廿五", 
"廿六","廿七","廿八","廿九","三十"}; 

//农历月份 
private static string []MonthName = {"*","正","二","三","四","五","六","七","八","九","十","十一","腊"}; 

//公历月计数天 
private static int []MonthAdd = {0,31,59,90,120,151,181,212,243,273,304,334}; 
//农历数据 
private static int []LunarData = {2635,333387,1701,1748,267701,694,2391,133423,1175,396438 
,3402,3749,331177,1453,694,201326,2350,465197,3221,3402 
,400202,2901,1386,267611,605,2349,137515,2709,464533,1738 
,2901,330421,1242,2651,199255,1323,529706,3733,1706,398762 
,2741,1206,267438,2647,1318,204070,3477,461653,1386,2413 
,330077,1197,2637,268877,3365,531109,2900,2922,398042,2395 
,1179,267415,2635,661067,1701,1748,398772,2742,2391,330031 
,1175,1611,200010,3749,527717,1452,2742,332397,2350,3222 
,268949,3402,3493,133973,1386,464219,605,2349,334123,2709 
,2890,267946,2773,592565,1210,2651,395863,1323,2707,265877}; 
/// <summary> 
/// 获取对应日期的农历 
/// </summary> 
/// <param name="dtDay">公历日期</param> 
/// <returns></returns> 
public static string GetLunarCalendar(DateTime dtDay) 
{ 
string sYear=dtDay.Year.ToString(); 
string sMonth=dtDay.Month.ToString(); 
string sDay=dtDay.Day.ToString(); 
int year; 
int month; 
int day; 
try 
{ 
year = int.Parse(sYear); 
month = int.Parse(sMonth); 
day = int.Parse(sDay); 
} 
catch 
{ 
year = DateTime.Now.Year; 
month = DateTime.Now.Month; 
day = DateTime.Now.Day; 
} 

int nTheDate; 
int nIsEnd; 
int k,m,n,nBit,i; 
string calendar = string .Empty; 
//计算到初始时间1921年2月8日的天数:1921-2-8(正月初一) 
nTheDate = (year-1921)*365+(year-1921)/4+day+MonthAdd[month-1] -38; 
if((year%4 == 0) && (month > 2)) 
nTheDate += 1; 
//计算天干,地支,月,日 
nIsEnd = 0; 
m = 0; 
k = 0; 
n = 0; 
while(nIsEnd != 1) 
{ 
if(LunarData[m] < 4095) 
k = 11; 
else 
k = 12; 
n = k; 
while(n>=0) 
{ 
//获取LunarData[m]的第n个二进制位的值 
nBit = LunarData[m]; 
for(i=1;i<n+1;i++) 
nBit = nBit/2; 
nBit = nBit % 2; 
if (nTheDate <= (29 + nBit)) 
{ 
nIsEnd = 1; 
break; 
} 
nTheDate = nTheDate - 29 - nBit; 
n = n - 1; 
} 
if(nIsEnd == 1) 
break; 
m = m + 1; 
} 
year = 1921 + m; 
month = k - n + 1; 
day = nTheDate; 
return year+"-"+month+"-"+day; 
}

} 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -