博文

ASP.NET的实时天气及24小时天气预报(C#) (2006-09-06 09:53:00)

摘要:GetWeather.aspx
  
  <%@ Page language=c# Codebehind=GetWeather.aspx.cs AutoEventWireup=false Inherits=test.GetWeather %>
  <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN >
  <HTML>
  <HEAD>
  <title>GetWeather</title>
  <meta name=GENERATOR Content=Microsoft Visual Studio 7.0>
  <meta name=CODE_LANGUAGE Content=C#>
  <meta name=vs_defaultClientScript content=javascript>
  <meta name=vs_targetSchema content=http://schemas.microsoft.com/intellisense/ie5>
  </HEAD>
  <body>
  <form id=GetWeather method=post runat=server>
  <FONT face=宋体>
  <P>
  <asp:Label id=lblWeather runat=server>Weather</asp:Label></P>
  <P>
  <asp:Button id=btnGet runat=server Text=Get Weather></asp:Button></P>
  <P>
  <asp:Label id=Weather2 runat=server>24小时天气</asp:Label></P>
  <P>......

阅读全文(2139) | 评论:0

ASP.NET2.0数据库入门之SQL Server (2006-09-06 09:52:00)

摘要:因为Access并不真正为高性能应用程序服务,所以一个希望有多个同时连接用户的站点必须部署一个比Access更适合的数据源。本文将讲述如何从Microsoft SQL Server(一种企业级RDMS)中获取数据。 SQL Server完全版包括了三个部分。第一个是引擎,用于实际组织数据以及针对命令响应进行读取和写入操作。第二个是开发人员的工具软件包,用于对数据库进行操作,例如Query Analyzer和Data Transformation Services。最后一个是用于管理数据的工具,包括备份程序和复制模式。 虽然完全版对大型企业来说有着不可估量的好处,但是很多开发人员并不需要整套工具。幸运的是,Microsoft提供了一个SQL Server引擎的免费版,叫做SQL Server Express(SSE)。尽管它具有一个使用T-SQL命令来导入模式和数据的命令行工具(osql.exe),但是它还不包含在SQL Server完全版中具有的丰富图形化的工具。不过,可以方便地使用Visual Studio或者Visual Web Developer来使用SSE开发数据库。SSE有一个限制,即只处理本地的连接(不可能在Web服务器之外的不同机器上运行SSE)。对于具有某些嗜好的人以及学生的Web站点来说,SSE是一个非常适合的选择。可能会使用基于SQL Server 2000的MSDE,而SSE则基于SQL Server的Yukon版。 除非有另外特别的说明,这里所介绍的所有技术均可应用于SQL Server的三种形式(完全版产品、SSE和MSDE),因此,通用术语SQL Server包含了这三种形式。 因为SSE只是一个引擎而并没有内置的开发工具(到2004年),所以必须使用其他的工具来创建、修改或者填充数据库。为此我们将要使用的主要工具是Visual Studio或者Visual Web Developer,其中提供了Database Explorer作为其界面的一部分。请注意Database Exporer可以更改本地数据库中的数据和模式,但是它只能更改远程数据库中的数据(而不是结构)。在Visual Studio中,Database Explorer被称为Server Explorer,因为它包括了一些处理非数据库服务器的附加功能。我们还将在本书的......

阅读全文(1767) | 评论:0

ASP.NET生成高质量缩略图通用函数 (2006-09-06 09:51:00)

摘要:在网站开发时,生成缩略图是一个非常常见和实用的功能.以前在asp里只能借助com组件实现,现在在.net里可以利用框架的强大的类库轻松实现.下面帖出完整的代码(带详细注释),参考了网上的一些文章及.net sdk相关内容.QQROOM网络家园的图片上传用到了所有的4种生成方式.         /// <summary>
        /// 生成缩略图
        /// </summary>
        /// <param name="originalImagePath">源图路径(物理路径)</param>
        /// <param name="thumbnailPath">缩略图路径(物理路径)</param>
        /// <param name="width">缩略图宽度</param>
        /// <param name="height">缩略图高度</param>
        /// <param name="mode">生成缩略图的方式</param>   
        public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, i......

阅读全文(1563) | 评论:0

浅析C#语言实现堆和队列数据结构(2006-09-06 09:51:00)

摘要:1,线性聚集基础
  在数据结构层次中最高层次的抽象是一个聚集,在这个聚集分为两个大类;第一类是线性聚集;另一种是非线性聚集。
  
  线性聚集可以根据其命名知道是按照一种线性次序进行排序的。在线性聚集中又根据存取不同分为:广义索引、直接存取和顺序存取三类。广义索引包括字典和散列表;直接存储包括有数组、文件以及记录;顺序存取包括:表、栈、队列和优先队列。非线性队列可以层次聚集和群聚集来分,其中层次聚集中包括数和堆;群聚集中包括集合和图.
  
  2,栈和C#构建栈
  栈是一种最长常使用和最重要的数据结构,栈通常在用于处理语法识别、表达计算等方面。栈是在上面提到过的过的顺序表中的一种,这种顺序表特点是后进先出(Last In First Out)。
  
  栈主要两种典型的抽象数据类型:顺序栈和连式栈。
  
  通常我们都将对于采用数组存储的栈方式称做顺序栈,下面我通过C#语言给大家写一个简单的顺序栈。如图1所是。
    
   图1,数组实现栈的数据结构
  对于另外一种使用链表做存储的栈,我们将其称做连式栈。同样我们通过一个程序实现一个连式栈。如图2所示.
    
   图2,链表实现栈的数据结构
  
  3,队列和C#构建队列
  队列和栈都是属于线性表,队列和栈在本质上的区别是在存取方式上面的,队列使用的是先进先出(First In First Out)的方式实现数据的存取。通常运用在多消息处理上面,按照队列的顺序处理。下面通过一个C#实例实现队列,图3
  
   图3,链表实现队列的数据结构
  
  4,总结
  本文重点讲述了数据结构中线性表的栈和队列,并且通过C#代码去实现一些实例。 ......

阅读全文(2028) | 评论:0

Visual C#中调用Windows服务初探 (2006-09-06 09:50:00)

摘要:Windows服务是独立于登录用户而工作的Windows应用程序,它通常在计算机启动时开始执行,且常常连续执行,直到计算机关闭为止。像Exchange Server,IIS和杀毒软件等都使用这种方式,这样就可以独立于某一用户而且可以在任何用户登录前来运行,同时也可以服务于所有的进程,从而以一种服务的形式存在。
  
  正因为Windows服务有着这么多的特性,因此,当需要一些特殊功能的时候就可以考虑使用Windows服务来解决问题。比如下面我们要做的这个例子。对于我们这些程序设计人员,计算机是在一起工作时间最长的伙伴,每天都会对着它的屏幕八个小时以上,还不包括下班后在家打游戏的时间,因此,保护眼睛是最重要的了。问题的起因来源于本人周六去眼科对激光手术的复查,大夫一再向我强调眼睛的自我调节能力,就是说只要你能保证你每隔一个小时左右就闭眼休息或向远处眺望,离开电脑屏幕,那么已经治好的近视就不会反弹。本人虽是自律性比较强的人,但在计算机屏幕面前就不再如此了,往往几个小时也不抬头一次,为了眼睛的健康,我决定把这个艰巨的任务交由计算机来完成,让它在一小时左右自动提醒我休息五分钟。如此一来,岂不是再也不用顾虑这件事了。
  
  功能虽然简单,但要写个程序放在启动组里每天自动运行也不是一个好的办法,正巧以前也没做过Windows服务,不如索性来试一试,同进也看看.NET为我们提供了多么先进的功能吧,于是决定,就用C#来做一个提醒我保护眼睛的Windows服务,取名就叫CareEye吧。
  
  运行Visual Studio.NET 2003,建立一个C#的Windows服务项目,在CareEye.cs的设计视图提示可以把需要的控件和组件拖动到这上面,假如想要做系统日志的话当然就可以把EventLog组件拖过来了,不过这个程序好像不需要这些东西,还是算了吧。那么计时要不要采用计时器控件呢?想了一下,这个控件虽然好用,但太常用了,本着学习新知识的原则,最恰当的恐怕就是线程了,而且在以后做其他Windows服务的时候线程肯定是必需的,所以还是用线程好,这样我只要在线程中完成对时间的监测,把线程的启动和停止交给服务的启动和停止,呵,很方便啊。
  
  再来看CareEye.cs的源程序,一大堆没见过的东西,不过仔细分析一下也就没什......

阅读全文(1712) | 评论:0

C#.NET 中的“小甜饼” cookie 编程 (2006-09-06 09:49:00)

摘要:Cookie就是所谓的" 小甜饼" ,他最早出现是在Netscape Navigator 2.0中。Cookie其实就是由Web服务器创建的、将信息存储在计算机上的文件。那么为什么Web服务器要在客户机上面创建如此文件?这是因为当客户机发送一个请求到WEB服务器时(譬如准备浏览页面时),无论此客户机是否是第一次来访,服务器都会把它当作第一次来对待,WEB服务器所做的工作只是简单的进行响应,然后就关闭与该用户的连接。这样处理过程所带来的缺点时显而易见的。自从网景公司开发出Cookie以后,就可以利用Cookie来保存用户的识别信息。Cookie的作用可以记录了您在该站点上曾经访问过的页面,由此帮助您下次访问该站点时自定义查看。Cookies 也可以存储个人可识别信息。个人可识别信息是可以用来识别或联系您的信息,例如姓名、电子邮件地址、家庭或工作地址,或者电话号码。然而,网站只能访问您提供的个人可识别信息。例如,除非您提供电子邮件名称,否则网站将不能确定您的电子邮件名称。另外,网站不能通过Cookie来访问计算机上的其他信息。当然除非你提供。那么Cookie到底存放在什么地方?如果机器的系统是视窗98且安装在" C" 盘中,那么Cookie存放在" C:\Windows\Cookies" 目录中;如果机器系统是视窗2000且安装在" C" 盘中,那么Cookie存放在" C:\Documents and Settings\Administrator\Cookies" 目录中。了解了Cookie这么多知识,我们还是来了解一下本文的重点-- C#是如何进行Cookie方面编程的。主要内容有二点:其一是 C#是如何写入Cookie;其二是 C#是如何访问自己写入的Cookie。
  
  一、本文介绍的程序设计和运行的软件环境:
  微软公司视窗2000服务器版
  .Net FrameWork SDK Beta 2
  
  C#进行Cookie方面编程是通过ASP.NET页面来实现的。
  
  二、C#如何写入Cookie:
  为了写入Cookie,他的步骤主要有三步,具体如下:
  
  首先就要创建一个HttpCookie对象,通过这个对象来构造一个Cookie,这个对象的名称就是以后......

阅读全文(1423) | 评论:0

用.NET获取汉字的区位码(C#)的方法(2006-09-06 09:48:00)

摘要:计算机中最底层的数据都是用二进制及0和1来表示的。每个0或1称作1位,第8位二进制数叫做1个字节,它可以表示ASCII码中的一个字符。中文计算机中用两个字节即16位二进制来表示一个汉字。而在Unicode编码中所有的符号(包括汉字,英文,标题及其它众多符号)都是为两字节(16)位来表示。
  
  在System.Text命名空间中包含众多编码的类,可供进行操作及转换,下面用两个实例来进行区位码及汉字之间的互换,希望能起到举一反三的效果,让大家可以轻松处理文字编码方面的问题:
  
  程序代码:
  
  using System;
  using System.Text;
  class CodingChange
  {
  public string CharacterToCoding(string character)
  {
  string coding = "";
  for (int i = 0; i<character.Length; i++ )
  {
  byte[] bytes = System.Text.Encoding.Unicode.GetBytes(character.Substring(i,1)); //取出二进制编码内容
  string lowCode = System.Convert.ToString(bytes[0], 16); //取出低字节编码内容(两位16进制)
  if (lowCode.Length == 1)
  lowCode = "0" + lowCode;
  string hightCode = System.Convert.ToString(bytes[1], 16);//取出高字节编码内容(两位16进制)
  if (hightCode.Length == 1)
  hightCode = "0" + hightCode;
  coding += (lowCode + hightCode);//加入到字符串中,
  }
  return coding;
  }
  public string CodingToCharacter(string ......

阅读全文(1824) | 评论:0

C#中调用Windows API的技术要点 (2006-09-06 09:48:00)

摘要:在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的。本文将C#中调用API的要点汇集如下,希望给未在C#中使用过API的朋友一点帮助。另外如果安装了Visual Studio .net的话,在C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\Technologies\Interop\PlatformInvoke\WinAPIs\CS目录下有大量的调用API的例子。
  
  一、调用格式
  
  using System.Runtime.InteropServices; //引用此名称空间,简化后面的代码
  ...
  //使用DllImportAttribute特性来引入api函数,注意声明的是空方法,即方法体为空。
  [DllImport("user32.dll")]
  public static extern ReturnType FunctionName(type arg1,type arg2,...);
  //调用时与调用其他方法并无区别
  
  可以使用字段进一步说明特性,用逗号隔开,如:
  
  [ DllImport( "kernel32", EntryPoint="GetVersionEx" )]
  DllImportAttribute特性的公共字段如下:
  
  1、CallingConvention 指示向非托管实现传递方法参数时所用的 CallingConvention 值。
  
  CallingConvention.Cdecl : 调用方清理堆栈。它使您能够调用具有 varargs 的函数。
  CallingConvention.StdCall : 被调用方清理堆栈。它是从托管代码调用非托管函数的默认约定。
  
  2、CharSet 控制调用函数的名称版本及指示如何向方法封送 String 参数。
  
  此字段被设置为 CharSet 值之一。如果 CharSet 字段设置为 Unic......

阅读全文(1426) | 评论:0

定制VB.NET控件编程之拦截击键动作 (2006-09-06 09:47:00)

摘要:一、 简介

  首先,本文假定你已经熟悉VB.NET和Visual Studio.NET Windows表单设计器。

  在开发定制Windows表单控件时,提供我们自己的下拉框类型编辑器来操作控件的属性常常是非常方便的。定制的类型编辑器不仅可以提供更为丰富的设计时刻体验,而且可能成为用户是否喜欢你的控件的决定因素。

  如果你决定创建你自己的下拉式类型编辑器,那么它应该遵循与内置的下拉框类型编辑器相类似的模式。让我们以Anchor属性为例。一种典型的操作该属性的设计时刻用户交互描述如下:

  · 用户选择属性格子中的Anchor属性并且点击属性格右边的下拉按钮。

  · 一种良好的图形控件是下拉框,它能够允许用户使用鼠标点击边缘或者使用箭头键来高亮某个边缘并使用空格键选择/取消选择它。

  · 用户可以通过按下ENTER键或点击下拉控件的外部来接收变化。为了取消这一变化,用户可以按下ESC键。

  下面,让我们来讨论具体的实现技术。

  二、 实现

  首先,让我们构建一个ResourceImageEditor类型编辑器,它允许从当前文件系统中选择一个图像文件(就象内置的ImageEditor类一样)或者从一个程序集的manifest文件中选择一个图像资源。而且,在用户体验方面,该ResourceImageEditor的行为应该类似于系统内置的类型编辑器。下面是对我们要求的概述:

  1. 当用户从属性格子中选择一个属性时,该格子就会显示出来—以一个下拉框UI形式显示可以编辑的属性。

  2. 当点击下拉按钮时,当前程序集中的所有图像资源将显示出来。

  3. 当用户选择一个图像资源项,相应的图像即可以从程序集中进行加载。

  4. 允许选择一个图像文件,并且在下拉列表框中的最后一项将标记为“Browse...”。当用户点按“Browse...”项,将显示经典的打开文件对话框,用户能够从中选择一个图像文件。

  5. 通过单击鼠标或使用箭头键高亮某项并按回车键实际选择它从而允许用户从该下拉列表框中选择一项。这个下拉选择可以通过按下ESC键取消。

  Reso......

阅读全文(1743) | 评论:0

ASP.NET创建Web服务之发布和部署(2006-09-06 09:46:00)

摘要:部署一个XML Web服务包括复制.asmx文件和任何XML Web服务使用的汇编文件,而不要把Microsoft.NET Framework的一部分作为Web服务器上的虚拟目录。有关如何部署一个XML Web服务的信息,请参见"部署XML Web服务"。XML Web服务对使用发现机制的用户适用。用户可以浏览一个特殊的发现文件或Web服务器的根来定位发现文件。从这些文件中,他们可以判断那些服务对他们来说有用。

  部署XML Web服务

  部署一个XML Web服务包括把.asmx文件和任何XML Web服务使用的汇编文件,而不是Microsoft.NET Framework的一部分,复制到Web服务器上。

  例如,假设你把一个XML Web服务命名为StockServices。为了部署XML Web服务,你需要在你的Web服务器上创建一个虚拟目录和把XML Web服务的.asmx文件放入这个目录。这个虚拟目录还应该是一个IIS Web应用程序,虽然它不是必需的。一个典型的部署将有下面的目录结构:

\Inetpub
\Wwwroot
\StockServices
StockServices.asmx
\Bin
  你的XML Web服务使用的汇编不是Microsoft.NET Framework一部分的。

  XML Web服务发布的条目

  当你发布一个XML Web服务时,下列条目用来部署一个Web服务器。

条目 描述 Web应用程序目录 作为你的XML Web服务的根目录。所有的文件都存放在这个目录中。这个目录应该被标记为一个IIS Web应用程序所用。 <MyXMLWebService>.asmx 文件 调用XML Web服务的客户端的基本URL。这个文件可以为任何有效的文件名。 <MyXMLWebService>.disco文件 (可选的)作为XML Web服务的发现机制。.disco文件不会自动地为XML Web服务创建。这个文件可以为任何有效的文件名。 Web.config文件 (可选择的)如果你需要覆盖默认配置设置,你可以包含一个w......

阅读全文(3287) | 评论:0