博文

如何获得字符串的字节数(2006-11-08 17:46:00)

摘要:string test="hello"; int cout=System.Text.Encoding.Default.GetByteCount(test); count的值将是5.......

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

ASP.NET 保存DataTable 到Excel文件(2006-10-26 19:55:00)

摘要:private void SaveToExcel(DataTable objTable)    {        int CountR = objTable.Rows.Count;//行数        int CountC = objTable.Columns.Count;//列数        Response.Clear();        Response.Buffer = true;         //设置Http的头信息,编码格式        Response.AppendHeader("Content-Disposition", "attachment;filename=result.xls");        Response.ContentType = "application/ms-excel";         //设置编码        Response.Charset = "GB2312";        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");        //写表头        for (int i = 0; i < CountC; i++)  &......

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

ORACLE的取整方法(2006-10-12 18:02:00)

摘要:round()四舍五入,如: round(3.55)=4 round(3.12)=3 trunc()只取整数部分,如: trunc(3.55)=3 trunc(3.12)=3......

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

DotNet中获得Graphics对象的途径(2006-08-04 17:33:00)

摘要:1、使用窗体的Paint事件   使用窗体的Paint事件的PaintEventArgs参数来获取一个与窗体相关联的Graphics对象,例如下面的代码将获得一个与Form1相关联的Graphics对象private void form1_Paint(object sender,PaintEventArgs e){ Graphics g =e.Graphics;}2、重载OnPaint方法   通过重载窗体的OnPaint方法也可以的到Graphics对象,例如protected override void OnPaint (PaintEventArgs e){ Graphics g =e.Graphics;}3、通过窗体的CreateGraphics方法   当我们想通过按钮或菜单来创建Graphics时,使用CreateGraphics方法是个非常不错的选择,使用如下Graphics g =this.CreateGraphics();g.Dispose()值得注意的是,在用CreateGraphics创建Graphics对象时,必须通过显式的调用Dispose方法来释放与此对象相关的资源来释放这个对象。4、其他途径   可以通过Graphics类的FromImage,FromHwnd,FromHdc等静态方法非别从图象、窗口句柄、设备上下文的窗口句柄创建Graphics对象Bitmap bmp=new Bitmap(400,200,PixelFormat.Format32bppArgb);Graphics g=Graphics .FromImage(bmp);Graphics g2=Graphics FromHwnd(this.Handle); <完>......

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

[摘抄]C#平台调用方法(2006-07-31 12:28:00)

摘要:原文地址http://www.51one.net/study/cc/2625.html#pinvoke_callingdllexport 平台调用服务 (PInvoke) 允许托管代码调用在 DLL 中实现的非托管函数。 本教程说明使用什么方法才能从 C# 调用非托管 DLL 函数。该教程所讨论的属性允许您调用这些函数并使数据类型得到正确封送。 教程 C# 代码有以下两种可以直接调用非托管代码的方法: 直接调用从 DLL 导出的函数。 调用 COM 对象上的接口方法(有关更多信息,请参见 COM Interop 第一部分:C# 客户端教程)。 对于这两种技术,都必须向 C# 编译器提供非托管函数的声明,并且还可能需要向 C# 编译器提供如何封送与非托管代码之间传递的参数和返回值的说明。 该教程由下列主题组成: 直接从 C# 调用 DLL 导出 默认封送处理和为非托管方法的参数指定自定义封送处理 为用户定义的结构指定自定义封送处理 注册回调方法 该教程包括下列示例: 示例 1 使用 DllImport 示例 2 重写默认封送处理 示例 3 指定自定义封送处理 直接从 C# 调用 DLL 导出 若要声明一个方法使其具有来自 DLL 导出的实现,请执行下列操作: 使用 C# 关键字 static 和 extern 声明方法。 将 DllImport 属性附加到该方法。DllImport 属性允许您指定包含该方法的 DLL 的名称。通常的做法是用与导出的方法相同的名称命名 C# 方法,但也可以对 C# 方法使用不同的名称。 还可以为方法的参数和返回值指定自定义封送处理信息,这将重写 .NET Framework 的默认封送处理。 示例 1 本示例显示如何使用 DllImport 属性通过调用 msvcrt.dll 中的 puts 输出消息。// PInvokeTest.cs using System; using System.Runtime.InteropServices; class PlatformInvokeTest { [DllImport("msvcrt.dll")] public static e......

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

配置文件的读写(2006-07-28 11:01:00)

摘要:配置文件的读和写操作是许多软件都必须得操作,Windows API为我们提供了两个函数进行配置文件的读和写操作,这大大方便了我们的软件开发。 首先来看看配置文件的格式,一个格式正确配置文件应该是和下面类似的[节点1]子键1=键值子键2=键值子键3=键值。。。。。。[节点2]子键1=键值子键2=键值。。。。。。[节点3]。。。。。。 节点可以有任意个,节点名也可以随意取,关键是“[]”不能省,子键也可以有任意个,注意等号右边直接写键值,如果是字符串也不要加双引号,默认的就是字符串。加了反倒会在字符串上多处双引号。 接着我们来看看怎么进行读写,Windows API 为我们提供的这两个函数是:读函数GetPrivateProfileString写函数WritePrivateProfileString他们的声明如下:Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As LongPublic Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long我们先来介绍下这两个函数,lpApplicationName 指的是节点名,注意这是一个String 类型,所以调用的时候我们必须加双引号比如“节点1”;lpKeyName是子键名,调用的时候也要加双引号;lpDefault 是默认值,如果填的话接受区内将是这个值;lpReturnedStr......

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

使用vb6.0实现无标题栏窗体的平滑移动(2006-07-27 18:10:00)

摘要:先说一下目前网络上流传的一种移动方法,这种方法的实现原理其实很简单,它是通过计算鼠标按下和放起的坐标差来确定移动后窗体的位置。首先在窗体的MouseDown事件中记录下移动前鼠标的位置,然后在MouseUp事件中也记录下鼠标的位置,通过计算这两个坐标的差值就可以确定窗体移动后的位置。这种方法的缺点是移动的时候跳跃感很明显,感觉比较别扭。 通过简单的API调用可以很好地实现无标题栏窗体的移动,可以不夸张地说没这种方法实现的效果比Microsoft做的还要好,而且实现也很简单,下面我们来看看这是怎么实现的。 使用的API函数Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long该函数可以获得鼠标在屏幕上的位置坐标,并把赋给一个POINTAPI类型变量。POINTAPI的定义如下Private Type POINTAPI        X As Long        Y As LongEnd Type 下面我们来实际的操作,首先建立一个标准EXE工程,把Form1的BorderStyle设为0-None,这样窗体的标题栏就没有了,进入窗体的代码界面输入下面的代码 '定义POINTAPI类型Private Type POINTAPI        X As Long        Y As LongEnd Type'API函数声明Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long'定义一个用于记录鼠标起始位置坐标的POINTAPI变量Dim scrPT As POINTAPI'在窗体的MouseDown事件中用API函数返回鼠标起始坐标Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Sin......

阅读全文(5131) | 评论:4

[转载]如何创建复合控件(2006-07-25 17:00:00)

摘要: 复合控件提供了一种创建和重用自定义图形界面的方法。复合控件本质上是具有可视化表示形式的组件。因此,它可能包含一个或多个 Windows 窗体控件、组件或代码块,它们能够通过验证用户输入、修改显示属性或执行作者所需的其他任务来扩展功能。可以按照与其他控件相同的方式将复合控件置于 Windows 窗体中。在本演练的第一部分,将创建一个名为 ctlClock 的简单复合控件。在本演练的第二部分,将通过继承扩展 ctlClock 的功能。 注意 显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。 创建项目 创建新的项目时应指定其名称,以设置根命名空间、程序集名称和项目名称,并确保默认组件将位于正确的命名空间中。 创建 ctlClockLib 控件库和 ctlClock 控件 在“文件”菜单上,指向“新建”,然后单击“项目”打开“新建项目”对话框。 从 Visual C# 项目列表中选择“Windows 控件库”项目模板,在“名称”框中键入“ctlClockLib”,然后单击“确定”。 默认情况下,项目名称 ctlClockLib 也被分配到根命名空间中。根命名空间用于限定程序集中的组件名。例如,如果两个程序集都提供名为 ctlClock 的组件,则可以使用 ctlClockLib.ctlClock. 指定 ctlClock 组件。 在解决方案资源管理器中,右击“UserControl1.cs”,然后选择“重命名”。将文件名更改为 ctlClock.cs。当系统询问是否要重命名对代码元素“UserControl1”的所有引用时,单击“是”按钮。 注意 默认情况下,复合控件从系统提供的 UserControl 类继承。UserControl 类提供了所有复合控件要求的功能,并实现了标准方法和属性。 在“文件”菜单上,单击“全部保存”保存项目。 向复合控件添加 Windows 控件和组件 可视化界面是复合控件的基本部分。这种可视化界面是通过向设计器图面添加一个或多个 Windows 控件实现的。在下面的演示中,将向复......

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