winform天气预报小工具(附源码下载)_C#教程

所以我们要添加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;
}
}
}
}

源码下载
安装使用(安装的时候一路默认,改变安装路径,请您试试把,成功的话那皆大欢喜)
喜欢的支持下哈,当然你可以增加功能,美化该小工具,请一定要告诉我哈

时间: 2024-09-18 16:06:15

winform天气预报小工具(附源码下载)_C#教程的相关文章

winform分页控件 附源码下载_C#教程

以前都是从事B/S开发,由于公司有个比较大的C/S项目,在使用DATAGRIDVIEW的时候,显示数据量比较大,所以才用分页模式,也不知道这样是否正确.  想找个C/S下面的分页控件,都没有什么好的,就自己跟B/S下的分页控件,修改成WINFORM下面的.  首先创建一个用户控件名称为pager,在控件中拖入bindingNavigator和bindingSource,修改bindingNavigator,加入必要的一些控件.  效果如下: 代码实现如下: namespace WindowsAp

C#图书管理系统 附源码下载_C#教程

用来练手还是不错的,分享大家看一下,还是一些新颖点的   !哈哈  就是自定义DataGridView,方便每个功能部分调用!简单!再次重申!!!后面源码会送上!  首先看一下登录,上图吧!  只有超级管理员跟管理员 接下来看一下主界面  更改DataGridView数据列 datagridView自定义类  using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy

winfrom 打印表格 字符串的封装实现代码 附源码下载_C#教程

所以对于应用层用着还不是很方便.最近做一个项目顺便就封装了一个调用默认打印机的类.虽说有几个小bug,但对于目前来说,已经满足需求了.以后不够了在来升级吧. 1,关于打印上下左右边距和纸张的高宽.以往都把这些写死到代码里面.既然是调用默认打印机,打印机的型号自然有差异.所以我就把这些配置放到app.config里面.但又怕每次打印都加载config影响效率.故此设计了个PrintPaper类.里面所有属性都是静态的.还有一个静态的构造方法.这样只有在程序开始运行加载一次config.之后就直接从

jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)_jquery

弹出层主要用于展示丰富的页面信息,还有一个更好的应用是弹出表单层丰富交互应用.常见的应用有弹出登录表单层,用户提交登录信息,后台验证登录成功后,弹出层消失,主页面局部刷新用户信息.本文我们将给大家介绍如何使用jQuery+Ajax+PHP弹出层异步登录的应用. 效果展示        源码下载 HTML 由于本例UI部分使用了Bootstrap,以及使用jQuery插件,因此需要事先载入相关文件,推荐大家使用相关的CDN资源. <link rel="stylesheet" hre

Jquery插件之Fancybox丰富的弹出层效果附源码下载_jquery

Fancybox是一款优秀的jquery插件,它能够展示丰富的弹出层效果.前面我们有文章介绍了facybox弹出层效果,相比facybox,fancybox显得功能更为齐全,它除了可以加载DIV,图片.图片集.Ajax数据,还能加载SWF影片,iframe页面等等. 效果演示     源码下载 fancybox 特点: 可以支持图片.html 文本.flash 动画.iframe 以及 ajax 的支持: 可以自定义播放器的 css 样式: 可以以组的形式进行播放: 如果将鼠标滚动插件(mous

详解 PHP加密解密字符串函数附源码下载_php实例

项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 下面先给大家展示下效果图,感兴趣的朋友继续阅读全文. 效果演示     源码下载 笔者收录了一些比较经典的PHP加密解密函数代码,分享给大家.加密解密原理一般都是通过一定的加密解密算法,将密钥加入到算法中,最终得到加密解密结果. 1.非常给力的authcode加密函数,Discuz!经典代码(带详解): function authc

基于spring+hibernate+JQuery开发之电子相册(附源码下载)_java

项目结构: 开发之电子相册(附源码下载)_java-spring hibernate源码"> 项目首页: 注册页面: 上传图片: 效果图一: 效果图二: 效果图三: ============================================================= 下面是代码部分 ============================================================= 需要用到的数据库SQL: 复制代码 代码如下: drop dat

不依赖Flash和任何JS库实现文本复制与剪切附源码下载_javascript技巧

效果图如下: 我们在网页上放置一个复制按钮,主要用来方便用户复制链接之类的复杂文本,以往的做法是,通过JS依靠Flash,甚至借助jQuery庞大的js库来实现文本复制到剪贴板的.今天我要给大家介绍的是一款极现代的,不需要flash,不依赖任何其他js库的非常小的插件,它叫clipboard.js. 查看演示 下载源码 HTML 首先加载本地clipboard.js文件. 复制代码 代码如下: <script src="clipboard.min.js"></scri

基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)_jquery

这是一款基于jQuery的弹出对话框插件,这个jQuery对话框插件的最大特点是弹出和关闭都带有非常炫酷的动画特效,比如旋转飞入.上下抖动飞入等.效果图如下: 效果演示     源码下载 html代码: <div class="container"> <h1>jQuery gDialog Plugin Exampels</h1> <button class="btn demo-1">Alert Dialog Box&l

jQuery 自定义下拉框(DropDown)附源码下载_jquery

先给大家展示下效果图,喜欢的朋友可以下载源码哦 效果演示   源码下载 <section class="main"> <div class="wrapper-demo"> <div id="dd" class="wrapper-dropdown-1" tabindex="1"> <span>手册网</span> <ul class="