博文

使用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 ......

阅读全文(7326) | 评论: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     定时报警     TxtTime   ......

阅读全文(3005) | 评论: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    AND a.state = p.state ORDER BY a.au_lname ASC, a.au_fname ASC......

阅读全文(2911) | 评论: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 属性”对话框中,单击“共享”选项卡,然后单击“共享该文件夹”。 现在可以在共享的 test 中创建源代码管理数据库了。 创建源代码管理数据库 在服务器,单......

阅读全文(2774) | 评论: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:Lavender;height:22px;width:37px;" />        其实asp.net利用的还是现有的一些技术。只......

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

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

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

阅读全文(3127) | 评论: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};    }    static public void Main()    {       int[] myA......

阅读全文(3539) | 评论: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 {    public void MyMethod(out int i) {i = 10;}    public void MyMethod(ref int i) {i......

阅读全文(6984) | 评论: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 执行下列转换:   1、COM coclass 转换为具有无参数构造函数的 C# 类。   2、COM 结构转换为具有公共字段的 C# 结构。   检查 TlbImp 输出......

阅读全文(2847) | 评论: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 向窗口发送一条消息 3. API之文件处理函数 CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 CompareFileTime 对比两个文件的时间 CopyFile 复制文件 Creat......

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