博文

使用timer控件创建一个简单的报警程序(2006-02-27 16:38:00)

摘要:简介:        当我使用计算机工作时,我总是如此的专心致志,以至于每当我过了“一会儿”去看时间时,发现已经过了三个小时,而我却完全没有意识到!所以我决定使用我从Code Project学来的C#技术,来创建一个简单的应用程序—使用Timer 对象来倒计时一个由我自己设定的时间,并一直循环播放一段wave音乐,直到你重设timer控件。   Timer对象基础        首先你要知道的是,使用Timer对象你需要访问如下命名空间:using System.Threading;using System.Timers;        接下来,介绍一下创建一个Timer的要点以及为这个timer对象的Elapsed事件设定事件委派。        先创建一个Timer对象,这里我定义我使用的timer为timerClock。接下来设定Elapsed事件委派,当事件被触发时,指定的委派将被调用,这里我定义我使用的委派名称为OnTimer()。        接着,设定Interval属性,使用毫秒数值指示希望Elapsed事件被调用的间隔,这意味着,当我定义Interval属性为1000毫秒时,我定义的委派OnTimer()将每隔1000毫秒被调用一次,或者说是每隔1秒。        最后,需要设定Enabled属性为true,以使这个timer对象开始工作。接下来,剩下的只是一个小问题—创建一个委派,在这个timer对象的Elapsed属性被触发时调用。如果你以前没有使用过委派,不用担心,它们很容易使用,只需要创建一个方法,用来接收适合你捕获事件的一些变量。        针对Elapsed事件,这个委派需要接收一个普通对象和一个ElapsedEventArgs对象。private System.Timers.Timer ......

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

在C#中运用API函数编写多功能关机程序 (2006-02-27 16:36:00)

摘要: 我用visual C#来编写一个多功能的关机程序。该程序具有:定时关机、倒计时关机、关机提醒、系统信息获取等四项功能, 可设定关机时间精确到秒。并且让你很快掌握Visual C#中对API的操作程序。编写过程如下:

一、设计关闭Windows窗体
1.界面的设计:
    新建一个标准工程,向工程中增加一个Windows窗体并向窗体中添加如下控件,并分别设置其属性:
控件名     类别     Text     控件名     类别     Text     
CheckBox1     CheckBox     自动关机     GroupBox1     GroupBox     当前系统时间     
CheckBox1     CheckBox     倒计时执行操作     GroupBox2     GroupBox     设定时间     
CheckBox1     CheckBox     定时报警    ......

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

使用联接(2005-08-03 18:07:00)

摘要:使用联接
联接条件可在 FROM 或 WHERE 子句中指定,建议在 FROM 子句中指定联接条件。WHERE 和 HAVING 子句也可以包含搜索条件,以进一步筛

选联接条件所选的行。

联接可分为以下几类:

内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students 和 courses 表中学生标识号相同的所有行。

外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定:

LEFT JOIN 或 LEFT OUTER JOIN。
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,

则在相关联的结果集行中右表的所有选择列表列均为空值。

RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

FULL JOIN 或 FULL OUTER JOIN。
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,

则整个结果集行包含基表的数据值。

交叉联接。
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。

例如,下面的内联接检索与某个出版商居住在相同州和城市的作者:

USE pubs
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors AS a INNER JOIN publishers AS p
   ON a.city = p.city
  &nbs......

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

vs.net web项目使用visual source safe进行源代vs.net web项目使用(2005-08-02 18:56:00)

摘要: 
这段时间在公司做一个.net项目, 一个项目开发小组3个人,开发环境是vs.net,语言是c#,三个人协同开发。既然是协同开发,就要找一个源代码控制软件来进行开发中的源代码管理和版本控制。我们首先想到的是clearcase,名气大嘛,而且大家都没用过,都想尝尝鲜。谁知道这个玩意实在是太复杂了,先是要在window2000上安装active directory (就这都弄了一整天),然后又是license问题, 千辛万苦的总算是安装好,能运行了。一看那么多的程序项,那么多的文档,一个字:晕,什么玩意啊,弄的这么复杂,还让不让人活了。从此,再也没人提clearcase了,都自认弱智,搞不定这玩意。接下来的选择就是Vss了,跟clearcase比,vss真是可爱多了,小巧玲珑,功能虽没有clearcase强大,但对于一般的不是很大的项目是足够了。

我们在使用过程中基本比较顺利,window应用项目很简单,在使用中一点问题没出,web应用项目出了些问题,主要是配置的时候有些地方比较容易搞错,在此主要就web应用的vss管理做一定的描述。

首先是vss的版本问题,visual studio 6中的vss是版本6.0,.net是不能用这个版本的,要用vss6.0c,这是6.0的一个改进版本,可是在vs.net中文企业架构版的7张碟中竟然没有这个vss6.0c,据说在英文版中有,我没英文版的也搞不清楚,后来在网上找到一个vss6.0c。

安装比较简单,现在服务器上安装vss6.0c,安装好后,在服务器目录C:\Program Files\Microsoft Visual Studio\Common\VSS下有个NETSETUP.EXE文件,共享这个目录,客户机就执行这个NETSETUP.EXE文件进行安装。

创建源代码管理数据库
在服务端要先创建一个源代码管理数据库,以存储您的开发团队的共享文件的服务器版本。

为源代码管理数据库创建共享网络文件夹
在源代码管理服务器中,打开 Windows 资源管理器,新建一个名为 test的文件夹。
右击“test”,然后单击“属性”。
在“test 属性”对话框中,单击“共享”选项卡,然后......

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

学习ASP.NET的体会(2005-08-02 18:55:00)

摘要:
在ASP.NET中,整张Web页是放在一张大表单里面的。如:

<HTML>

<HEAD><TITLE>********</TITLE>

</HEAD>

<BODY>

<FORM NAME=”FORM1” ACTION=”*****”>

网页的具体内容……

</FORM>

</BODY>

</HTML>

       在这个表单内可能放置了很多html控件如按钮、下拉菜单、文本框等。ASP.NET提供了一些服务器端Web控件。在服务器上执行的时候,通过一定的条件,Web窗体将这些服务器Web控件转换为普通的html控件。比如一个按钮:

       <asp:Button id="B_submit" runat="server" Width="37" Height="22" Text="确定" BackColor="DodgerBlue" BorderColor="Lavender" ForeColor="White"></asp:Button>

       经过转换后就变成了:

<input type="submit" name="B_submit" value="确定" id="B_submit" style="color:White;background-color:DodgerBlue;border-color:Lav......

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

ref和out(MSDN)--补充(2005-05-20 09:31:00)

摘要:    我们发现,ref和out似乎可以实现相同的功能.因为都可以改变传递到方法中的变量的值.但是,二者本质本质的区别就是,ref是传入值,out是传出值.在含有out关键字的方法中,变量必须由方法参数中不含out(可以是ref)的变量赋值或者由全局(即方法可以使用的该方法外部变量)变量赋值,out的宗旨是保证每一个传出变量都必须被赋值.
    所以ref侧重修改.out侧重输出.
......

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

 C# 程序员参考-----使用 ref 和 out 传递数组(2005-05-20 09:28:00)

摘要: 

使用 ref 和 out 传递数组请参见
数组
与所有的 out 参数一样,在使用数组类型的 out 参数前必须先为其赋值,即必须由接受方为其赋值。例如:

public static void MyMethod(out int[] arr)
{
   arr = new int[10];   // definite assignment of arr
}
与所有的 ref 参数一样,数组类型的 ref 参数必须由调用方明确赋值。因此不需要由接受方明确赋值。可以将数组类型的 ref 参数更改为调用的结果。例如,可以为数组赋以 null 值,或将其初始化为另一个数组。例如:

public static void MyMethod(ref int[] arr)
{
   arr = new int[10];   // arr initialized to a different array
}
下面的两个示例说明 out 和 ref 在将数组传递给方法上的用法差异。

示例 1
在此例中,在调用方(Main 方法)中声明数组 myArray,并在 FillArray 方法中初始化此数组。然后将数组元素返回调用方并显示。

// cs_array_ref_and_out.cs
using System;
class TestOut
{
   static public void FillArray(out int[] myArray)
   {
      // Initialize the array:
      myArray = new int[5] {1, 2, 3, 4, 5};
  &nb......

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

ref和out(MSDN)(2005-05-20 09:25:00)

摘要:  先总的来说:
通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响.此外我们还有其他向方法传递参数的形式,引用(ref)和输出(out).
    有时,我们需要改变原来变量中的值,这时,我们可以向方法传递变量的引用,而不是变量的值.引用是一个变量,他可以访问原来变量的值,修改引用将修改原来变量的值.变量的值存储在内存中,可以创建一个引用,他指向变量在内存中的位置.当引用被修改时,修改的是内存中的值,因此变量的值可以将被修改.当我们调用一个含有引用参数的方法时,方法中的参数将指向被传递给方法的相应变量,因此,我们会明白,为什么当修改参数变量的修改也将导致原来变量的值.
在次首先先说ref:(MSDN)
C# 程序员参考   

ref请参见
C# 关键字 | 方法参数
方法参数上的 ref 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。

若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。ref 参数的值被传递到 ref 参数。

传递到 ref 参数的参数必须最先初始化。将此方法与 out 参数相比,后者的参数在传递到 out 参数之前不必显式初始化。

属性不是变量,不能作为 ref 参数传递。

如果两种方法的声明仅在它们对 ref 的使用方面不同,则将出现重载。但是,无法定义仅在 ref 和 out 方面不同的重载。例如,以下重载声明是有效的:

class MyClass
{
   public void MyMethod(int i) {i = 10;}
   public void MyMethod(ref int i) {i = 10;}
}
但以下重载声明是无效的:

class MyClass
{
&nbs......

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

基于C#的接口基础教程(2005-05-19 08:59:00)

摘要:  C#中不仅支持.Net 平台,而且支持COM平台。为了支持 COM和.Net,C# 包含一种称为属性的独特语言特性。一个属性实际上就是一个 C# 类,它通过修饰源代码来提供元信息。属性使 C# 能够支持特定的技术,如 COM 和 .Net,而不会干扰语言规范本身。C# 提供将COM接口转换为 C#接口的属性类。另一些属性类将 COM类转换为C# 类。执行这些转换不需要任何 IDL 或类工厂。

  现在部署的任何COM 组件都可以在接口转换中使用。通常情况下,所需的调整是完全自动进行的。

  特别是,可以使用运行时可调用包装 (RCW) 从 .NET 框架访问 COM 组件。此包装将 COM 组件提供的 COM 接口转换为与 .NET 框架兼容的接口。对于 OLE 自动化接口,RCW 可以从类型库中自动生成;对于非 OLE 自动化接口,开发人员可以编写自定义 RCW,手动将 COM 接口提供的类型映射为与 .NET 框架兼容的类型。

  使用ComImport引用COM组件
COM Interop 提供对现有 COM 组件的访问,而不需要修改原始组件。使用ComImport引用COM组件常包括下面 几个方面的问题:

  1、创建 COM 对象。

  2、确定 COM 接口是否由对象实现。

  3、调用 COM 接口上的方法。

  4、实现可由 COM 客户端调用的对象和接口。

  创建 COM 类包装

  要使 C# 代码引用COM 对象和接口,需要在 C# 中包含 COM 接口的定义。完成此操作的最简单方法是使用 TlbImp.exe(类型库导入程序),它是一个包括在 .NET 框架 SDK 中的命令行工具。TlbImp 将 COM 类型库转换为 .NET 框架元数据,从而有效地创建一个可以从任何托管语言调用的托管包装。用 TlbImp 创建的 .NET 框架元数据可以通过 /R 编译器选项包括在 C# 内部版本中。如果使用 Visual Studio 开发环境,则只需添加对 COM 类型库的引用,将为您自动完成此转换。

  TlbImp 执行下列转换: ......

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

Windows API函数大全(2005-05-19 08:58:00)

摘要:1. API之网络函数
WNetAddConnection 创建同一个网络资源的永久性连接
WNetAddConnection2 创建同一个网络资源的连接
WNetAddConnection3 创建同一个网络资源的连接
WNetCancelConnection 结束一个网络连接
WNetCancelConnection2 结束一个网络连接
WNetCloseEnum 结束一次枚举操作
WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接
WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接
WNetEnumResource 枚举网络资源
WNetGetConnection 获取本地或已连接的一个资源的网络名称
WNetGetLastError 获取网络错误的扩展错误信息
WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称
WNetGetUser 获取一个网络资源用以连接的名字
WNetOpenEnum 启动对网络资源进行枚举的过程

2. API之消息函数
BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口
GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置
GetMessageTime 取得消息队列中上一条消息处理完毕时的时间
PostMessage 将一条消息投递到指定窗口的消息队列
PostThreadMessage 将一条消息投递给应用程序
RegisterWindowMessage 获取分配给一个字串标识符的消息编号
ReplyMessage 答复一个消息
SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口
SendMessageCallback 将一条消息发给窗口
SendMessageTimeout 向窗口发送一条消息
SendNotifyMessage 向窗口发送一条消息
......

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