手机
当前位置:查字典教程网 >编程开发 >C#教程 >winform天气预报小工具(附源码下载)
winform天气预报小工具(附源码下载)
摘要:所以我们要添加web引用共两个1.根据IP地址获取你所在城市(假如没有这个,而直接引用相关网站提供的webservice,你所在的地点可能不...

所以我们要添加web引用共两个

1.根据IP地址获取你所在城市(假如没有这个,而直接引用相关网站提供的webservice,你所在的地点可能不是很准确,假如,你用了路由器....等,不知道大家是有同感)

2.根据上一部获取的城市,调用获取天气数据的webservice

贴取部分代码:

复制代码 代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.ServiceModel;

using System.Runtime.InteropServices;

namespace MyWeather

{

public partial class Form1 : Form

{

string myip,mycity;

private double opacity = 0;//记录当前窗体的透明度

//实现无边框移动

[DllImport("user32.dll")]

public static extern bool ReleaseCapture();

[DllImport("user32.dll")]

public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);

public const int WM_SYSCOMMAND = 0x0112;

public const int SC_MOVE = 0xF010;

public const int HTCAPTION = 0x0002;

//实现无边框移动

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

Opacity = 0;//指定窗体完全透明

GetIP();

GetCityByIP(myip);

DisplayWeather();

}

protected void GetIP()

{

try

{

string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址

Uri uri = new Uri(strUrl);

System.Net.WebRequest wr = System.Net.WebRequest.Create(uri);

System.IO.Stream s = wr.GetResponse().GetResponseStream();

System.IO.StreamReader sr = new System.IO.StreamReader(s, Encoding.Default);

string all = sr.ReadToEnd(); //读取网站的数据

int i = all.IndexOf("[") + 1;

string tempip = all.Substring(i, 15);

string ip = tempip.Replace("]", "").Replace(" ", "");//找出i

myip = ip;

}

catch (Exception e)

{

Console.WriteLine(e.ToString());

}

}

protected void GetCityByIP(string myip)

{

IPCity.IpAddressSearchWebService city = new IPCity.IpAddressSearchWebService();

string[] ss = city.getCountryCityByIp(myip);

int n = ss[1].IndexOf(' ');//空格所在位置

int m = ss[1].IndexOf('省');//ss[1]的实际内容是XX省 XX市,而获取天气的webservice只需要知道是某个市不需要知道省,所以截取了XX市

int x = n - m;

mycity = ss[1].Substring(m+1,x-2);

}

protected void DisplayWeather()

{

webxml.WeatherWebService w = new webxml.WeatherWebService();

//把webservice当做一个类来操作

string[] s = new string[23];//声明string数组存放返回结果

s = w.getWeatherbyCityName(mycity);

if (s[8] == "")

{

MessageBox.Show("暂时不支持您查询的城市");

}

else

{

string png = s[8].Substring(0, s[8].Length - 4);

string png2 = s[15].Substring(0, s[15].Length - 4);

string png3 = s[20].Substring(0, s[20].Length - 4);

string path = Application.StartupPath;

pictoday.Image = Image.FromFile(path+"images"+png+".png");

pic1.Image = Image.FromFile(path + "images" + png + ".png");

pic2.Image = Image.FromFile(path + "images" + png2 + ".png");

pic3.Image = Image.FromFile(path + "images" + png3 + ".png");

this.lbl1.Text = s[5].ToString();

this.lbl2.Text = s[12].ToString();

this.lbl3.Text = s[17].ToString();

this.time.Text = s[4].ToString();

this.address.Text = s[1].ToString();

this.temperature.Text = s[5].ToString();

this.label4.Text = s[6].Substring(s[6].IndexOf('日')+1).ToString();

this.label5.Text = s[7].ToString();

this.tempo1.Text = s[6].Substring(s[6].IndexOf('日')+1);

this.tempo2.Text = s[13].Substring(s[13].IndexOf('日')+1);

this.tempo3.Text = s[18].Substring(s[18].IndexOf('日')+1);

}

}

//实现无边框移动

private void Form1_MouseDown(object sender, MouseEventArgs e)

{

ReleaseCapture();

SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);

}

private void timer1_Tick(object sender, EventArgs e)

{

if (opacity <= 1)

{

opacity = opacity + 0.05;

Opacity = opacity;

}

}

}

}

安装使用(安装的时候一路默认,改变安装路径,请您试试把,成功的话那皆大欢喜)

喜欢的支持下哈,当然你可以增加功能,美化该小工具,请一定要告诉我哈

【winform天气预报小工具(附源码下载)】相关文章:

winform调用javascript的小例子

C#中事件处理的个人体会

获得.net控件的windows句柄的方法

c#中分割字符串的几种方法

C# 超高面试题收集整理

winform树形菜单无限级分类实例

C#汉字转换拼音技术详解(高性能)

c# HttpWebRequest通过代理服务器抓取网页内容应用介绍

C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的应用(下)

C#难点逐个击破(7):checked与unchecked

精品推荐
分类导航