标签归档:.net

WebService SendTimeout 超时问题

转自:http://blog.csdn.net/xuzhongxuan/article/details/5694215

System.TimeoutException: 请求通道在等待 00:01:00 以后答复时超时。增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值。分配给此操作的时间可能是更长超时的一部分。

WCF中解决方案:
1)首先保证客户端每次建立的连接在使用完成后进行关闭.即调用Close()方法,否则此连接会在设置的会话(一般为10分钟)后才自动关闭.期间任何客户端也无法使用此服务.
2)如果默认的连接数不能满足客户端的需要,可以增加连接数.配置文件如下:
<serviceThrottling maxConcurrentCalls=”20″ maxConcurrentSessions=”20″ maxConcurrentInstances=”30″ />
说明:maxConcurrentCalls :最大并发数,默认为16
maxConcurrentSessions :最大的会话数,主要针对于PerSession的情况,默认为10
maxConcurrentInstances:最大实例数,默认为26

 

在.net webService 中:

设置这些参数,延长连接时间,

closeTimeout=”00:10:00″ openTimeout=”00:10:00″ receiveTimeout=”00:10:00″ sendTimeout=”00:10:00″

 

其中有设置连接数据量大小的参数:

 


   
     
       
         
         
           
           
         
       
     
   
   
     
       
         
       
     
   
  
   
  
	 
 

c#.netDataGrid绑定数据库数据

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace DatabaseStudy
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }


        private void ButtonGetData_Click(object sender, RoutedEventArgs e)
        {
            string StrConnect = "server = localhost;database = Test;uid = Test;pwd = Nothjkkjjhing/123";
            string StrSelect = "select * from [Test].[dbo].[Info]";
            SqlConnection conn = new SqlConnection(StrConnect);
            //conn.Open();
            SqlCommand cmd = new SqlCommand(StrSelect, conn);
            SqlDataAdapter ShlyAdapter = new SqlDataAdapter(cmd);
            DataSet ShlyDataSet = new DataSet();
            ShlyAdapter.Fill(ShlyDataSet);
            DataGridShowData.ItemsSource = ShlyDataSet.Tables[0].DefaultView;
        }
    }
}

C#中隐式运行CMD命令行窗口的调用方法及输入命令

下面介绍一种常用的在C#程序中调用CMD.exe程序,并且不显示命令行窗口界面,来完成CMD中各种功能的简单方法。
MS的CMD命令行是一种重要的操作界面,一些在C#中不那么方便完成的功能,在CMD中几个简单的命令或许就可以轻松搞定,如果能在C#中能完成CMD窗口的功能,那一定可以使我们的程序简便不少。
下面介绍一种常用的在C#程序中调用CMD.exe程序,并且不显示命令行窗口界面,来完成CMD中各种功能的简单方法。
如下所示:
System.Diagnosties.Process p=new System.Diagnosties.Process(); 
p.StartInfo.FileName="cmd.exe";//要执行的程序名称 
p.StartInfo.UseShellExecute=false; 
p.StartInfo.RedirectStanderInput=true;//可能接受来自调用程序的输入信息 
p.StartInfo.RedirectStanderOutput=true;//由调用程序获取输出信息 
p.StartInfo.CreateNoWindow=true;//不显示程序窗口 
p.Start();//启动程序 
//向CMD窗口发送输入信息: 
p.StanderInput.WriteLine("shutdown -r t 10"); //10秒后重启(C#中可不好做哦) 
/*若要使用 StandardInput,您必须将 ProcessStartInfo ..::.UseShellExecute 设置为 false,并且将 ProcessStartInfo ..::.RedirectStandardInput 设置为 true。 
否则,写入 StandardInput 流时将引发异常。*/
//获取CMD窗口的输出信息: 
string sOutput = p.StandardOutput.ReadToEnd();有啦以下代码,就可以神不知鬼不觉的操作CMD啦。总之,Process类是一个非常有用的类,它十分方便的利用第三方的程序扩展了C#的功能。 
详细源码如下:
using System; 
using System.Diagnostics; 
namespace Business 
{ 
///  
/// Command 的摘要说明。 
///  
public class Command 
{ 
private Process proc = null; 
///  
/// 构造方法 
///  
public Command() 
{ 
proc = new Process(); 
} 
///  
/// 执行CMD语句 
///  
/// 要执行的CMD命令 
public void RunCmd(string cmd) 
{ 
proc.StartInfo.CreateNoWindow = true; 
proc.StartInfo.FileName = "cmd.exe"; 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardError = true; 
proc.StartInfo.RedirectStandardInput = true; 
proc.StartInfo.RedirectStandardOutput = true; 
proc.Start(); 
proc.StandardInput.WriteLine(cmd); 
proc.Close(); 
} 
///  
/// 打开软件并执行命令 
///  
/// 软件路径加名称(.exe文件) 
/// 要执行的命令 
public void RunProgram(string programName,string cmd) 
{ 
Process proc = new Process(); 
proc.StartInfo.CreateNoWindow = true; 
proc.StartInfo.FileName = programName; 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.RedirectStandardError = true; 
proc.StartInfo.RedirectStandardInput = true; 
proc.StartInfo.RedirectStandardOutput = true; 
proc.Start(); 
if (cmd.Length != 0) 
{ 
proc.StandardInput.WriteLine(cmd); 
} 
proc.Close(); 
} 
///  
/// 打开软件 
///  
/// 软件路径加名称(.exe文件) 
public void RunProgram(string programName) 
{ 
this.RunProgram(programName,""); 
} 
} 
} 
调用:
Command cmd = new Command(); 
cmd.RunCmd("dir"); 

SQLite开发入门

1。从http://www.sqlite.org/下载SQLite 3.3.4的版本
为了方便,我把它解压了,就一个SQLite3.exe,放入Windows目录下。
Cmd 进入命令行
1)
创建数据库文件:
>SQLite3 d:\test.db 回车
就生成了一个test.db在d盘。
这样同时也SQLite3挂上了这个test.db
2)
用.help可以看看有什么命令
>.help 回车即可
3)可以在这里直接输入SQL语句创建表格 用;结束,然后回车就可以看到了
4)看看有创建了多少表
>.tables
5)看表结构
>.schema 表名
6)看看目前挂的数据库
>.database
7)如果要把查询输出到文件
>.output 文件名
> 查询语句;
查询结果就输出到了文件c:\query.txt

把查询结果用屏幕输出
>.output stdout

8)把表结构输出,同时索引也会输出
.dump 表名
9)退出
>.exit 或者.quit

2。从http://sqlite.phxsoftware.com/下载Ado.net驱动。
下载了安装,在安装目录中存在System.Data.SQLite.dll
我们只需要拷贝这个文件到引用目录,并添加引用即可对SQLite数据库操作了
所有的Ado.net对象都是以SQLite开头的,比如SQLiteConnection
连接串只需要如下方式
Data Source=d:\test.db 或者DataSource=test.db–应用在和应用程序或者.net能够自动找到的目录
剩下的就很简单了~~

3。SQL语法
由于以前用SQLServer或者ISeries,所以DDL的语法很汗颜
1)创建一个单个Primary Key的table
CREATE TABLE  [Admin] (
[UserName] [nvarchar] (20)   PRIMARY KEY NOT NULL ,
[Password] [nvarchar] (50)   NOT NULL ,
[Rank] [smallint] NOT NULL ,
[MailServer] [nvarchar] (50)   NOT NULL ,
[MailUser] [nvarchar] (50)   NOT NULL ,
[MailPassword] [nvarchar] (50)   NOT NULL ,
[Mail] [nvarchar] (50)   NOT NULL
) ;
2)创建一个多个Primary Key的table
CREATE TABLE  [CodeDetail] (
[CdType] [nvarchar] (10)  NOT NULL ,
[CdCode] [nvarchar] (20)  NOT NULL ,
[CdString1] [ntext]   NOT NULL ,
[CdString2] [ntext]   NOT NULL ,
[CdString3] [ntext]   NOT NULL,
PRIMARY KEY (CdType,CdCode)

) ;
3)创建索引
CREATE  INDEX [IX_Account] ON  [Account]([IsCheck], [UserName]);

还可以视图等等。
4.还有很有用的SQL
Select * from Sqlite_master
Select datetime(‘now’)
Select date(‘now’)
Select time(‘now’)
以及很多函数,具体可以参考SQLite的wiki.

oh,还有就是看到有人说,好像成批插入的时候,启动事务,比不启动事务快n倍
还有就是尽量使用参数化的SQL,估计和商用DB一样能够自动Prepare.

from:http://www.sqlite.com.cn/MySqlite/4/33.Html

WinForm常用窗体属性

Form常用属性

AutoSizeMode属性 :值是: GrowAndShrink不能调整窗体大小 ;值是:GrowOnly 可以改变大小

(1)Name属性:用来获取或设置窗体的名称。

(2)WindowState属性:用来获取或设置窗体的窗口状态。

(3)StartPosition属性:用来获取或设置运行时窗体的起始位置。

(4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。

(5)Width属性:用来获取或设置窗体的宽度。

(6)Heigth属性:用来获取或设置窗体的高度。

(7)Left属性:用来获取或设置窗体的左边缘的 x 坐标(以像素为单位)。

(8)Top属性:用来获取或设置窗体的上边缘的 y 坐标(以像素为单位)。

(9)ControlBox属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。

(10)MaximumBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。

(11)MinimizeBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。

(12)AcceptButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按 ENTER 键时就相当于单击了窗体上的该按钮。

(13)CancelButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当用户按ESC键时就相当于单击了窗体上的该按钮。

(14)Modal属性:该属性用来设置窗体是否为有模式显示窗体。

(15)ActiveControl属性:用来获取或设置容器控件中的活动控件。

(16)ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。

(17)AutoScroll属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。

(18)BackColor属性:用来获取或设置窗体的背景色。

(19)BackgroundImage属性:用来获取或设置窗体的背景图像。

(20)Enabled属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。

(21)Font属性:用来获取或设置控件显示的文本的字体。

(22)ForeColor属性:用来获取或设置控件的前景色。

(23)IsMdiChild属性:获取一个值,该值指示该窗体是否为多文档界面 (MDI) 子窗体。

(24)IsMdiContainer属性:获取或设置一个值,该值指示窗体是否为多文档界面 (MDI) 中的子窗体的容器。

(25)KeyPreview属性:该属性用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体是否将接收该事件。

(26)MdiChildren属性:数组属性。

(27)MdiParent属性:该属性用来获取或设置此窗体的当前多文档界面 (MDI) 父窗体。

(28)ShowInTaskbar属性:该属性用来获取或设置一个值,该值指示是否在 Windows 任务栏中显示窗体。

(29)Visible属性:该属性获取或设置一个值,该值指示是否显示该窗体或控件。

(30)Capture属性:如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的范围内。

(1)Show方法

该方法的作用是让窗体显示出来,其调用格式为:

窗体名.Show();

(2)Hide方法

该方法的作用是把窗体隐藏出来,其调用格式为:

窗体名.Hide();

(3)Refresh方法

该方法的作用是刷新并重画窗体,其调用格式为:

窗体名.Refresh();

(4)Activate方法

该方法的作用是激活窗体并给予它焦点。其调用格式为:

窗体名.Activate();

(5)Close方法

该方法的作用是关闭窗体。其调用格式为:

窗体名.Close();

(6)ShowDialog方法

该方法的作用是将窗体显示为模式对话框。其调用格式为:

窗体名.ShowDialog();

C#零基础学习视频教程

跟MVP学C#视频教程

讲师介绍:桂素伟,微软MVP,微软中文技术论坛Visual C#、IT职业规划谈两个版块版主,微软WebCast讲师。精通C#,WinForm,ASP.NET,WPF,Windows Mobile等开发技术。山西DotNet俱乐部创始人之一,曾组织多次与微软合作组织活动,并多次组织山西DotNet俱乐部线上线下活动。

 

  1. 跟MVP学C#视频教程之一 .NET与C#语言
  2. 跟MVP学C#视频教程之二 数据类型
  3. 跟MVP学C#视频教程之三 流程控制
  4. 跟MVP学C#视频教程之四 数组与集合
  5. 跟MVP学C#视频教程之五 面向对象
  6. 跟MVP学C#视频教程之六 类
  7. 跟MVP学C#视频教程之七 继承
  8. 跟MVP学C#视频教程之八 接口
  9. 跟MVP学C#视频教程之九 委托与事件

这套教程是我至今见过最好的入门教程了(下载观看得安装Microsoft Office Live Meeting  http://office.microsoft.com/en-us/help/download-the-microsoft-office-live-meeting-2007-client-HA010173383.aspx

 

Winform课程

第一章 WinForm的基本知识

第二章 简单控件

第三章 复杂控件

第四章 ADO.NET(上)

第五章 ADO.NET(下)

第六章 Winform   ADO.NET实例

第七章 Winform  画图

第八章 Winform 窗体设计

第九章 文件操作和多线程(上)

第九章 文件操作和多线程(下)

第十章 项目讨论

全部下载地址: http://www.verycd.com/topics/2729901/

优酷:

http://www.youku.com/u/UMzkxMzk0OTI0/videos/order_1_view_1_page_1

 

微软件WebCast视频大全
http://www.msdnwebcast.com/

.net学习资料

1.微软支持
在你学习VS.NET的过程中,有疑问首先要向MicroSoft求助。如果你不懂得利用MicroSoft提供的庞大的学习资源,我要告诉你,你很不幸,你舍近求远了。
(1)首先,你要安装MSDN,他比所有VS.NET书籍详细。我为了装MSDN,可是牺牺了我的98和XP双启动,改成WindowsXP单系统。装了MSDN后,你要学习正则表达式,VS.NET   2003中点击“帮助”,再点击“搜索”,然后输入“正则”,一回车,哇,找到470个主题,这下你慢慢研究吧。实在研究不透,也不用急,还有Google和CSDN呢。
(2)在线Microsoft   .NET   框架   SDK   快速入门教程(http://chs.gotdotnet.com/QuickStart),可配合MSDN使用。分三块内容,   ASP.NET   |   Windows   窗体   |   如何…?常见任务   。   “常见任务快速入门”旨在帮助您快速找到常见编程问题的答案。
(3)微软中国社区(http://www.mscommunity.com/Profile/)。在社区注册,有问题就到社区去提问吧。
(4)在线中文MSDN(http://www.microsoft.com/china/MSDN/default.asp);在线英文MSDN(http://msdn.microsoft.com/),考考你的E文,不过有金山词霸在,我都不怕,你还用怕什么呢!
(5).NET主页(http://www.microsoft.com/china/net)
(6)Visual   Studio   .NET主页(http://www.microsoft.com/china/msdn/vstudio/prodinfo/overview.asp)。
为什么选择VS.NET,为什么看好VS.NET,看看MicroSoft的Help文档有多详尽就知道了。如果你不去利用MicroSoft提供的庞大的Help资源,是不是有点对不起盖茨呢!

2.CSDN http://www.csdn.net/
CSDN号称最大的开发者网络,确实不假。我最常去的是CSDN的
文档(http://www.csdn.net/develop/)
论坛(http://expert.csdn.net/expert/forum.asp)
只要你善于利用搜索功能,你在开发中遇到的多数问题可在文档和论坛中找到答案。如果你在开发过程中遇到疑难,而你又认为   BillGates帮不上你的忙,那么,你就上CSDN吧,一定会让你满意的。
教你两个绝招,第一招,是“搜索大法”。遇到问题,首先是在CSDN的文档和论坛进行搜索,看有无类似答案。如不行,再下一招。
第二招,“提问大法”,只要有礼貌有诚意地在论坛提问,一定有许多人乐于回答你的问题。

3.其他相关网站
有不少网站开辟VS.NET专栏,常去看看,必有收获。
pconline跟我学NET专栏(http://www.pconline.com.cn/pcedu/empolder/net/)

yesky的Visual   Studio.NET专栏(http://www.yesky.com/SoftChannel/72342380467978240/index.shtml)

ccidnet的NET专区(http://tech.ccidnet.com/pub/column/c340.html)

4.资料下载
如果不是包月上网,那么下载大量资源,再断线慢慢研究就很有必要了。
91asp提供电子书下载(http://www.91asp.cn/)

网友提供的大量VS.NET资源下载(ftp://qydn.vicp.net)

北京希望电子出版社图书素材资料下载(http://www.b-xr.com/bbs.htm)

清华大学出版社VS.NET源码下载(http://www.wenyuan.com.cn/xiazai.htm)

5.国外资源
如果你的E文不错,不妨上E文网站去取经。
http://www.codestudy.com

http://www.codeproject.com

http://www.only4gurus.com/v2

http://www.gotdotnet.com

http://www.aspnetpro.com

6.其他特色网站、专栏
CSDN上Latitude的VS.NET专栏(http://www.csdn.net/develop/author/netauthor/Latitude/)

【孟宪会之精彩世界】(http://xml.sz.luohuedu.net/xml/)

DotNet中华网(http://www.aspxcn.com/)

ASP酷(http://www.aspcool.com/)

http://www.chinaaspx.com

c#(.net)基于WebBrowser开发的简单的浏览器

用webbrowser控件做的浏览器,界面仿ie9,虽然很丑,懒得贴图,包含收藏夹功能(网上找的,研究中····),其他都是些webbrowser的方法,Internet选项用的是命令直接打开的方式,添加到收藏夹用的是创建快捷方式的方法实现的。

附上代码:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using IWshRuntimeLibrary;
using Microsoft.Win32;
using System.IO;
namespace MyBrowser
{
    public partial class MainForm : Form
    {

        string url = "www.baidu.com";

        string favorfolder = Environment.GetFolderPath(Environment.SpecialFolder.Favorites);
        public MainForm()
        {
            InitializeComponent();
            this.webBrowser1.StatusTextChanged += new EventHandler(webBrowser1_StatusTextChanged);
            ListMenuItem(收藏夹ToolStripMenuItem, new DirectoryInfo(favorfolder));
            // Refresh();
        }

        public void ListMenuItem(ToolStripMenuItem toolstripmenuitem, FileSystemInfo info)             //生成收藏夹菜单的函数,递归使用
        {
            if (!info.Exists) return;
            DirectoryInfo dir = info as DirectoryInfo;
            //不是目录
            if (dir == null) return;

            FileSystemInfo[] files = dir.GetFileSystemInfos();
            ToolStripMenuItem[] ShouCangsMenuItem = new ToolStripMenuItem[files.Length];
            for (int i = 0; i < files.Length; i++)
            {

                FileInfo file = files[i] as FileInfo;
                ShouCangsMenuItem[i] = new System.Windows.Forms.ToolStripMenuItem();

                //是文件
                if (file != null)
                {
                    if (file.Extension == ".url")
                    {
                        //ShouCangsMenuItem[i].Image = global::MyBrowser.Properties.Resources.ie1;//菜单项图片
                        string str = file.Name;             //获取收藏夹的文件名(都是URL文件)
                        str = str.Remove(str.Length - 4);     //去掉.url后缀名

                        ShouCangsMenuItem[i].Text = str;          //然后赋值给菜单文本

                        StreamReader sr = file.OpenText();//获取文件输入流

                        List src = new List();

                        string source = null;
                        while ((source = sr.ReadLine()) != null)
                        {
                            src.Add(source);//文件所有行添加到List中
                        }

                        ShouCangsMenuItem[i].Tag = src;

                        foreach (string stri in src)
                        {
                            if (stri != null)
                            {
                                if (stri.StartsWith("URL="))
                                {
                                    ShouCangsMenuItem[i].ToolTipText = stri.Remove(0, 4);//ToolTipText
                                }
                            }
                        }

                        toolstripmenuitem.DropDownItems.Add(ShouCangsMenuItem[i]);   //生成的子菜单添加到上一级菜单
                        ShouCangsMenuItem[i].Click += new EventHandler(ShouCangsMenuItem_Click);          //为生成的子菜单添加单击消息(可写一个消息处理函数,这里就不例出来了)
                    }
                }
                //对于子目录,进行递归调用
                else
                {
                    DirectoryInfo Direct = files[i] as DirectoryInfo;
                    ShouCangsMenuItem[i].Text = files[i].Name;
                    //ShouCangsMenuItem[i].Image = global::MyBrowser.Properties.Resources.folder2;//菜单项图片
                    ShouCangsMenuItem[i].ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
                    ShouCangsMenuItem[i].ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.SizeToFit;
                    toolstripmenuitem.DropDownItems.Add(ShouCangsMenuItem[i]);       //生成的子菜单添加到上一级菜单
                    ListMenuItem(ShouCangsMenuItem[i], new DirectoryInfo(Direct.FullName));   //递归使用,生成子菜单
                }
            }
        }

        private void ShouCangsMenuItem_Click(object sender, EventArgs e)
        {
            ToolStripMenuItem item = (ToolStripMenuItem)sender;
            string[] tar = ((List)item.Tag).ToArray();
            for (int i = 0; i < tar.Length; i++)
            {
                if (tar[i] != null)
                {
                    if (tar[i].StartsWith("URL="))
                    {
                        webBrowser1.Navigate(tar[i].Remove(0, 4));
                    }
                }
            }
        }

        /////////////////////////////底部信息/////////////////////////////////
        private void webBrowser1_StatusTextChanged(Object obj, EventArgs e)
        {
            this.label1.Text = webBrowser1.StatusText;
        }
        private void buttongo_Click(object sender, EventArgs e)
        {
            url = this.text_url.Text;
            this.webBrowser1.Navigate(url);

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Random rd = new Random();
            this.BackColor = Color.FromArgb(rd.Next(255), rd.Next(255), rd.Next(255));//随机背景颜色

            this.webBrowser1.Width = base.Width - 10;
            this.webBrowser1.Height = base.Height - 80;
            webBrowser1.GoHome();

            Invalidate();
        }

        private void button_home_Click(object sender, EventArgs e)
        {
            this.webBrowser1.GoHome();
        }

        private void button_fresh_Click(object sender, EventArgs e)
        {
            this.webBrowser1.Refresh();
        }

        private void button_back_Click(object sender, EventArgs e)
        {
            this.webBrowser1.GoBack();
        }

        private void button_forward_Click(object sender, EventArgs e)
        {
            this.webBrowser1.GoForward();
        }
        /////////////////////////////回车事件/////////////////////////////////
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                url = this.text_url.Text;
                this.webBrowser1.Navigate(url);
            }
        }

        private void text_url_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                url = this.text_url.Text;
                this.webBrowser1.Navigate(url);
            }
        }
        ////////////////////////////////////////////////////////////////////

        private void Form1_Resize(object sender, EventArgs e)
        {
            //this.webBrowser1.Width = base.Width-10;
            //this.webBrowser1.Height = base.Height - 95;
            this.panel1.Width = base.Width - 10;
            this.panel1.Height = base.Height - 90;
            this.toolStrip1.Location = new Point(base.Width - 60, this.toolStrip1.Location.Y);
            this.button_go.Location = new Point(base.Width - 193, this.button_go.Location.Y);
            this.text_url.Size = new Size(base.Width - 300, this.text_url.Size.Height);

        }

        private void 另存为ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            webBrowser1.ShowSaveAsDialog();
        }

        private void 查找ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            webBrowser1.GoSearch();
        }

        private void 页面属性ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            webBrowser1.ShowPropertiesDialog();
        }

        private void 打印ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            webBrowser1.ShowPrintDialog();
        }

        private void 打印预览ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            webBrowser1.ShowPrintPreviewDialog();
        }

        private void 页面设置ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            webBrowser1.ShowPageSetupDialog();
        }

        private void 关于MyToolStripMenuItem_Click(object sender, EventArgs e)
        {

            MessageBox.Show("My Browser made by DormyMo  \n www.7mdm.com \n \nQQ:440056060\n\n" + "ie版本" + webBrowser1.Version.ToString());
        }

        private void internet选项ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("inetcpl.cpl");

        }
        /////////////////////////////设置按钮效果/////////////////////////////////
        private void toolStripDropDownButton1_MouseEnter(object sender, EventArgs e)
        {
            this.toolStripDropDownButton1.Image = MyBrowser.Properties.Resources.shezhi2;
        }

        private void toolStripDropDownButton1_MouseLeave(object sender, EventArgs e)
        {
            this.toolStripDropDownButton1.Image = MyBrowser.Properties.Resources.shezhi;
        }
        //////////////////////////////////////////////////////////////////////////

        /////////////////////////////缩放/////////////////////////////////
        private void toolStripMenuItem2_Click(object sender, EventArgs e)
        {
            this.webBrowser1.Document.Body.Style = "zoom:0.5";
        }

        private void toolStripMenuItem4_Click(object sender, EventArgs e)
        {
            this.webBrowser1.Document.Body.Style = "zoom:0.75";
        }

        private void toolStripMenuItem5_Click(object sender, EventArgs e)
        {
            this.webBrowser1.Document.Body.Style = "zoom:1.0";
        }

        private void toolStripMenuItem6_Click(object sender, EventArgs e)
        {
            this.webBrowser1.Document.Body.Style = "zoom:1.25";
        }

        private void toolStripMenuItem7_Click(object sender, EventArgs e)
        {
            this.webBrowser1.Document.Body.Style = "zoom:1.5";
        }

        private void toolStripMenuItem8_Click(object sender, EventArgs e)
        {
            this.webBrowser1.Document.Body.Style = "zoom:2.0";
        }

        private void toolStripMenuItem9_Click(object sender, EventArgs e)
        {
            this.webBrowser1.Document.Body.Style = "zoom:4.0";
        }
        //////////////////////////////////////////////////////////////

        /////////////////////////////显示网页标题/////////////////////////////////
        private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            this.Text = this.webBrowser1.DocumentTitle + "                               made by DormyMo";
        }
        /////////////////////////////新窗口在原始窗口打开/////////////////////////////////
        private void webBrowser1_NewWindow(object sender, CancelEventArgs e)//当发生新窗口打开事件时
        {
            WebBrowser webBrowser_temp = (WebBrowser)sender;
            string newUrl = webBrowser_temp.Document.ActiveElement.GetAttribute("href");//截取url
            webBrowser1.Url = new Uri(newUrl);//把url传给webbrowser1
            e.Cancel = true; //取消ie操作
        }

        /////////////////////////////收藏夹按钮效果/////////////////////////////////
        private void toolStripDropDownButton2_MouseEnter(object sender, EventArgs e)
        {
            this.toolStripDropDownButton2.Image = MyBrowser.Properties.Resources.star2;
        }

        private void toolStripDropDownButton2_MouseLeave(object sender, EventArgs e)
        {
            this.toolStripDropDownButton2.Image = MyBrowser.Properties.Resources.star;
        }
        //////////////////////////////////////////////////////////////////////////

        private void 添加到收藏夹ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IWshShell_Class shell = new IWshShell_Class();
            IWshURLShortcut shortcut = null;
            string filename = this.webBrowser1.DocumentTitle;
            shortcut = shell.CreateShortcut(Environment.GetFolderPath(System.Environment.SpecialFolder.Favorites) + "\\" + filename + ".url") as IWshURLShortcut;
            shortcut.TargetPath = webBrowser1.Url.AbsoluteUri;

            shortcut.Save();
        }

        private void 百度一下ToolStripMenuItem_Click(object sender, EventArgs e)
        {

            this.webBrowser1.Navigate("www.baidu.com");
        }

        private void 打开收藏夹ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start(favorfolder);
        }

        private void 设为主页ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string key = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main";
            string valueName = "Start Page";
            string value = webBrowser1.Url.AbsoluteUri;
            DialogResult Confirm = MessageBox.Show("你确定要执行修改主页的操作吗!?", "通过注册表来修改Internet Explore的主页", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
            if (Confirm == DialogResult.OK)
            {
                Registry.SetValue(key, valueName, value);
                MessageBox.Show("你的浏览器主页已被更改为:" + webBrowser1.Url.AbsoluteUri, "恭喜您", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        }
    }
}

【源文件】

c#.net中使用GZipStream进行Gzip压缩

在抓取一些网站时,不论怎么改编码数据流都是乱码,这是就应该查看该网站是否用了gzip压缩(检测地址:http://tool.chinaz.com/Gzips/

再知道了该网址确实用了gzip压缩,就可以把他解压了,这样乱码的问题就解决了。

 

//压缩
         public void Compress(System.IO.Stream orgStream, System.IO.Stream cmpStream)
         {
             System.IO.Compression.GZipStream zipStream = new System.IO.Compression.GZipStream(cmpStream, System.IO.Compression.CompressionMode.Compress);
             BinaryWriter writer = new BinaryWriter(zipStream);
             BinaryReader reader = new BinaryReader(orgStream);
             while (true)
             {
                 byte[] buffer = reader.ReadBytes(100);
                 if (buffer == null || buffer.Length < 1)
                     break;
                 writer.Write(buffer);
             }
         }
 //解压缩
         public void DeCompress(System.IO.Stream cmpStream, System.IO.Stream orgStream)
         {
             System.IO.Compression.GZipStream zipStream = new System.IO.Compression.GZipStream(cmpStream, System.IO.Compression.CompressionMode.Decompress);
             BinaryReader reader = new BinaryReader(zipStream);
             BinaryWriter writer = new BinaryWriter(orgStream);
             while (true)
             {
                 byte[] buffer = reader.ReadBytes(100);
                 if (buffer == null || buffer.Length < 1)
                     break;
                 writer.Write(buffer);
             }
         }
 //执行压缩
         private void button1_Click(object sender, EventArgs e)
         {
             System.IO.FileStream targetstream = new System.IO.FileStream(this.txt_SelFile.Text, System.IO.FileMode.Open);
             System.IO.FileStream saveStream = new System.IO.FileStream(this.txt_SaveTo.Text, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.Read);
             CompressionHelper.Compress(CompressionHelper.CompressionMode.GZip,targetstream, saveStream);
             targetstream.Close();
             saveStream.Close();
         }
 //执行解压缩
         private void button2_Click(object sender, EventArgs e)
         {
             System.IO.FileStream targetstream = new System.IO.FileStream(this.txt_SelFile.Text, System.IO.FileMode.Open);
             System.IO.FileStream saveStream = new System.IO.FileStream(this.txt_SaveTo.Text,System.IO.FileMode.Create, System.IO.FileAccess.ReadWrite, System.IO.FileShare.Read);
             CompressionHelper.DeCompress(CompressionHelper.CompressionMode.GZip , targetstream, saveStream);
             targetstream.Close();
             saveStream.Close();
         }