博文
.net获取文件的内嵌图标(2007-02-25 15:27:00)
摘要:System.Drawing.Icon ico=System.Drawing.Icon.ExtractAssociatedIcon(path);......
用.net截取屏幕区域到图片(2007-02-25 15:24:00)
摘要:g.CopyFromScreen(0,0,0,0,new Size(1280,1024));......
如何获得字符串的字节数(2006-11-08 17:46:00)
摘要:string test="hello";
int cout=System.Text.Encoding.Default.GetByteCount(test);
count的值将是5.......
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++) &......
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);
<完>......
[摘抄]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......
[转载]如何创建复合控件(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 控件实现的。在下面的演示中,将向复......
