博文

精通GDI+ 图表(vb.net)(2006-11-11 11:18:00)

摘要:Introduction    There are some quite advanced features that can be incorporated into a dynamic chart, sometimes depending on where the data is coming from.   In this article, we are going to be begin with a fairly simple demo.   Then we will move on to one that is slightly more sophisticated and finally we will look at further enhancements that could be incorporated into this kind of graph.    So, let me set the scene.  What do we want to do here?   Well, the first dynamic line chart I plan to create is one that takes some simple user input and displays the values as they are chosen on the chart.   As each new value is selected, the chart will be extended and redrawn to show the continuous changes that have been made.  When the screen width is "full", the earliest values are lost from view as the graphic display continues to scroll from right to left.   One quick and easy demo is to create pu......

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

VB2005的程序设置(2006-11-11 11:08:00)

摘要: Application Settings in VB 2005 by Ged Mead | Published  10/24/2006 | .NET Newbie ,  Visual Basic 2005 ,  Win Forms | Rating: Introduction Introduction    Application and User Settings have been given a facelift in VB2005.   One of the questions that has appeared in VBCity Forums many times over the past few years is the one where someone wants to know how to save user choices, UI settings or other small items of data that have been input by users.  Traditionally, going back to Classic VB days this has been done by using the SaveSettings and GetSettings functions which access the Registry to write and read back the data.    This approach still works and can be used in all versions of VB.NET, including 2005.     While it's not difficult to use, I've never thought of it as particularly intuitive either. So it's good to see that in Visual Studio 2005 there is a very easy to use visua......

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

vb2005如何连接和操作数据库详解(2006-10-13 20:03:00)

摘要:ADO.NET 与您 Rockford Lhotka
Magenic Technologies 2002 年 5 月 22 日 从 MSDN Code Center 下载 vbADO.exe 示例文件(英文)。 Microsoft .NET 包括一种新的数据访问技术,称为 ADO.NET。采用这种新技术的原因有很多,其中包括:对断开连接的数据的内部支持、全面的 XML 支持以及该技术与整个 .NET 框架的无缝整合。 本文着重讨论该技术包含哪些功能,以及如何充分利用这一技术来使用数据库。我们首先介绍连接到数据库的基本要素,然后讨论如何读取和写入数据库。ADO.NET 的内容十分广泛,针对每种操作提供了很多方法。在本文中,我们将使用 DataSet 对象读取和写入数据,并尝试使用 DataReader 和 Command 对象手动读取和写入数据。同时还将探索动态 SQL 和存储过程的使用。读完本文后,您将可以使用 ADO.NET 来创建、读取、更新和删除数据。 大多数 Visual Basic® .NET 项目类型都自动引用 ADO.NET,包括 Windows® 应用程序、ASP.NET Web 应用程序和类库项目。此外,在这些项目类型的某个项目级别上,还会自动导入 System.Data 命名空间。您可以在项目的 Property(属性)对话框中看到全局 Import 语句列表。 图 1:显示在项目 Property(属性)对话框中的项目级导入 System.Data 命名空间对应用程序提供基本的数据支持,主要着重于数据的使用而不是数据访问本身。这意味着,在默认情况下,我们可以访问 DataSet 对象及其相关子对象,也可以访问定义如何进行数据访问的基本界面。 但是,在能够与数据库进行交互之前,我们需要确定要使用的数据提供程序。Microsoft .NET 包括两个现成的数据提供程序。SQL Server 提供程序提供对 Microsoft SQL Server™ 7.0 或更高版本的优化访问。OleDb 提供程序提供对具有 OleDb 提供程序的所有数据库的访问。 SQL Server 提供程序位于 System.Data.SqlClient 命名空间。该提供程序针对 SQL Server......

阅读全文(10078) | 评论:7

vb2005如何实现文件的压缩(2006-08-27 09:17:00)

摘要:GZipStream 类  注意:此类在 .NET Framework 2.0 版中是新增的。 提供用于压缩和解压缩流的方法和属性。 命名空间:System.IO.Compression
程序集:System(在 system.dll 中) var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl027a78bf9,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl02img,"; 语法
Visual Basic(声明)Public Class GZipStream Inherits Stream Visual Basic(用法)Dim instance As GZipStream C#public class GZipStream : Stream C++public ref class GZipStream : public Stream J#public class GZipStream extends Stream JScriptpublic class GZipStream extends Stream var ExpCollDivStr=ExpCollDivStr; ExpCollDivStr = ExpCollDivStr + "ctl00_LibFrame_ctl09a6cc181,"; var ExpCollImgStr = ExpCollImgStr; ExpCollImgStr = ExpCollImgStr + "ctl00_LibFrame_ctl09img,"; 备注
此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法。这种格式包括一个检测数据损坏的循环冗余校验值。GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但它可以扩展以使用其他压缩格式。这种......

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

动态加载类(2006-08-26 10:22:00)

摘要:动态加载类
Billy Hollis
2002年10月14日 从 MSDN Code Center 下载 VBNETDynamicForms.exe 示例文件(英文)。(请注意,在示例文件中,程序员的注释使用的是英文,本文中将其译为中文是为了便于读者进行理解。) 摘要:本月 Billy Hollis 对 Microsoft .NET 的扩展性进行了探讨,并说明了如何使用 System.Reflection 命名空间在 Visual Basic 应用程序中动态加载类。 理想情况下,编写软件系统之前我们就应该知道此软件系统需要完成哪些操作。但实际情况并非如此,因此我们的系统应该是可以调整的。 最能体现这种适应性的是动态集成新功能的能力。例如,在 Windows 窗体应用程序中,这种能力是指加载编译原始应用程序很久以后创建的窗体的能力。 这种操作在 Microsoft Visual Basic® 6.0 中几乎是不可能的,但是在 Visual Basic .NET 中却相当容易。利用 System.Reflection 命名空间的功能,程序只需知道程序集的位置即可请求动态加载该程序集。然后即可加载该程序集中的类并对类进行实例化。由于 Windows 窗体也是一种类,这就意味着可以动态地加载、显示和使用窗体,即使在编译原始程序时窗体并不存在。 典型的方案 假设我们有一个多文档界面 (MDI) 应用程序,需要具有将任意窗体加载为子窗体的能力。那么应用程序应该能够执行以下操作: 获取可以加载的窗体的列表,通常不在 .NET 配置文件中。 显示该列表并允许用户从中选择一个窗体。 实例化并显示用户选择的窗体。 让我们编写这样一个应用程序,看看如何完成动态加载。 步骤 1:创建项目和 MDI 窗体 启动一个新的 Windows 窗体项目。将其命名为 FormsOnTheFly。在新项目中包含的空窗体 Form1 中,将它的 IsMdiContainer 属性更改为 True。这样,该窗体即变成一个 MDI 父窗体。更改窗体的大小,使窗体的长和宽的尺寸大约为默认值的两倍。 将一个面板控件拖动到窗体上,然后设置它的 Dock 属性,使它靠接在窗体的顶部。更改面板的大小,使它的高度大约为 0.5 英寸。 将一个组合框拖......

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

在 VB.NET 中检索文件信息(2006-08-26 10:19:00)

摘要:在 VB.NET 中检索文件信息 Deborah L. Cooper 在本文中,Debbie Cooper 向您介绍了如何按照 Windows 在“属性”对话框中的显示方式检索有关文件的信息。您也许希望阅读(或再次阅读)Debbie 在 2002 年 12 月最新发表的“Monitoring Files the Easy Way Using VB.NET”文章。 您是否曾经希望了解如何检索要在您自己的应用程序中使用的特定文件的属性?如果您要在 VB.NET 中开发的应用程序依赖于特定的环境,那么在执行程序中的代码之前,您需要检查文件的属性。例如,您可能需要了解特定文件随之发行的产品,或者是文件的版本号。在 VB.NET 中,借助 GetVersionInfo 方法和 FileVersionInfo 类,要获得这些信息简直易如反掌。 如果启动 Windows 资源管理器,右击一个文件名,然后从弹出式菜单中选择“属性”,则会看到该文件的“属性”窗口。“属性”窗口显示了选定文件的有关信息。假设您在任务管理器的 TASKMAN.EXE 文件名上右击。图 1 显示了该文件的“属性”对话框。 通过使用 FileVersionInfo 类,您可以在 VB.NET 应用程序中提供相同的功能。根据应用程序的需要,您可以复制“属性”对话框中显示的全部信息,也可以复制其中的一部分。图 2 显示了我们将要创建的应用程序,它将用来复制“属性”对话框中显示的部分信息。 要创建演示程序,请启动 VB.NET,并开始一个名为 Retrieving File Properties(检索文件属性)的新项目。按照图 2 所示,向 Form1 添加七个文本框控件、七个标签控件和一个按钮控件。接下来,将以下代码添加到 Get Properties(获取属性)按钮的 Click 事件:Private Sub Button1_Click(ByVal sender _ As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click ' 获取记事本的文件版本 Dim FileProperties As FileVersionInfo = FileVersionInfo.GetVersionInfo("C:\WINN......

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

用Visual Basic.NET编写扑克牌游戏(1)(2006-08-26 09:44:00)

摘要:扑克游戏林林总总,同一种游戏各地玩法亦不尽相同。编程爱好者多喜欢编写一些本地玩法的扑克游戏。那么,编写自己的扑克游戏该从何处入手呢?

  扑克游戏编程关键有两点:一是扑克牌面的绘制;二是扑克游戏规则的算法实现。初学扑克游戏编程的爱好者可从一些简单的游戏、借用一些现有资源开始。本文拟借用Windows自带的Cards.dll和简单的21点游戏为例,介绍扑克游戏编程的初步方法。

  一、 扑克牌面绘制

  Cards.dll支持Windows自带的游戏,如Solitaire(纸牌游戏)。如果我们知道如何使用Cards.dll中的API函数,那么,我们就能像Windows自带的游戏一样绘制扑克牌面。我们需要使用其中三个基本函数:cdtInit, cdtDrawExt,和 cdtTerm。并且需要两个变量:width和height用于初始化函数cdtInit进行初始化。下面给出这些接口函数的声明及参数说明。

Private width As Integer = 0
Private height As Integer = 0

Declare Function cdtInit Lib "cards.dll" (ByRef width As Integer, _
ByRef height As Integer) As Boolean

  参数说明:width,height返回牌默认宽和高,单位为pixels。

Declare Function cdtDrawExt Lib "cards.dll" (ByVal hdc As IntPtr, _
ByVal x As Integer, ByVal y As Integer, ByVal dx As Integer, _
ByVal dy As Integer, ByVal card As Integer, _
ByVal mode As Integer, ByVal color As Long) As Boolean

  参数说明:hdc(handle to a device context)句柄;

  x,y指定牌左上角坐标位;
  dx,d......

阅读全文(1924) | 评论:1

P2P的简单示例:VB.net版(2006-08-26 09:41:00)

摘要:这是用VB.net实现的一个简单的P2P示例.利用了UDP打洞技术.分服务器端跟客户端.服务器端负责登陆记录用户的IP和端口及转发打洞消息.(相关技术在CSDN搜一下.有很多的.).原理到处都有,这里就没有贴出来.这里贴出了VB.net的代码.供初学者交流.也欢迎高手点评...

服务器端在启动成功后.输入help可以查看到服务器相关命令.

客户端在登陆成功后.输入help可以查看客户端相关命令.(登陆时用户名随便.)

以下是服务器端:

Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.Threading
Imports System.Collections

Module myUDPServer

#Region "全局变量"

Dim ServerSocket As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
Dim ipep As IPEndPoint = New IPEndPoint(IPAddress.Any, 11000)

Dim htUserList As New Hashtable '用来保存在线用户和用户的"IP和端口"

Dim userName(0) As String
Dim userIPEP(0) As IPEndPoint
Dim userTime(0) As Integer

Dim timerDelegate As New TimerCallback(AddressOf onLineTimeOut)

#End Region

#Region "参数"

'以下是客户端到服务器端的消息开头
Const LOGININ As String = "10" '请求登陆的消息|||消息形式:10 自己的用户名
Const LOGINOUT As String = "11"......

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

用VB2005构建反应灵敏的应用程序(多线程)(2006-08-26 09:33:00)

摘要:前言

   Visual Basic .NET中最突出的特色之一就是构造多线程应用程序。但由于多线程应用程序天然的复杂性及挑战性,使许多VB开发人员没有充分利用这一新提供的功能。

   在了解Visual Basic 2005创建多线程应用程序是多么容易以前,让我们看一看通常程序开发人员所遇到的挑战:长时间运行的任务在执行过程中经常限制了用户的输入或使用户无法与操作系统进行交互。

  一、长时间运行的任务实例

   在这个实例中,我们将对一个规定的整数计算斐波纳契数列(每个数等与数列前两个数之和)。也许这个例子对开发人员开发应用程序来说用处不大,但它的确是一个非常合适的例子,它不需要开发人员具备数据库或是其他一些必须得知识。你想象的应用程序中的长时间运行的任务类型可能是耗时的数据库操作、遗传系统调用、外部服务调用或是其他的一些深层次的资源操作。

   为了创建这个项目,首先创建一个窗体应用程序,它带有一个进度条、两个按钮、一个数字输入框和一个显示结果的标签。两个按钮分别命名为startSyncButton 和cancelSyncButton,将标签的text属性设置为no result。对窗体上的各个控件进行仔细布局调整以后,界面效果如下:


图一、创建一个新的窗体应用程序
   在这个窗体中添加以下代码计算斐波纳契数列。

Function ComputeFibonacci(ByVal n As Integer) As Long
  ’ The parameter n must be >= 0 and <= 91.
  ’ Fib(n), with n > 91, overflows a long.
  If n < 0 OrElse n > 91 Then
   Throw New ArgumentException( "value must be >= 0 and <= 91", "n")
  End If
  Dim result As Long = 0
  If n < 2 Then
   result = 1
  Else
   resu......

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

在VB 2005中定制自己的异常(2006-08-26 09:29:00)

摘要: 提要 本文在简要分析VB 2005所提供的异常处理机制的同时,详细讨论如何用它所提供的异常类定制自己的异常。

   结构化异常处理是随着.net的第一个版本的发行而加入到Visual Basic语言中的。结构化异常处理的重要性基于下面两个原因:

   1. 与以前的On Error Goto...语句相比而言,通过使用一种与该语言其它部分更适应的语法从而使得代码更具有可读性。

   2. 比以前的On Error Goto...语句功能更强,而且提供了更为灵活性的控制能力。

   一、 捕获并抛出异常

   异常处理是用Try...Catch...Finally...End Try语句实现的,其基本语法形式如下:

Try
'能够引发一个异常的代码
Catch
'处理异常的代码
Finally
'实现清理工作的代码(如关闭数据库连接,等等)
End Try

   Try和End Try语句都是必需的。Catch和Finally语句可以共同使用于一个Try块中,但是至少使用其中之一。而且,可以使用多个Catch语句来处理不同类型的异常。如果你有多个Catch块,可以对它们加以排序:从最具体的异常类型到最粗略的异常类型:

Try
  '能够引发一个异常的代码
Catch ex As ArgumentOutOfRangeException
  '有可能使用一个缺省值来处理一个无效参数以便使代码继续执行
Catch ex As Exception
  '处理任何其它类型的异常
Finally
  '实现清理工作的代码(如关闭数据库连接,等等)
End Try

   你也可以在你的代码中抛出异常。当你在代码中执行一些清理工作时,捕获并抛出异常是很有用的-这样以来,一个更高层级的过程可以捕获它。当你创建定制异常类型时,抛出异常也很有用。

   为了抛出一个异常,你可以编写如下形式的代码:

Throw New ArgumentOutOfRangeException

   ......

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