C#
欢香Love
历史是曾经的现实,现实是活着的历史
展开
-
C# 用户自定义控件制作教程
Net用户自定义控件继承UserControl类,设计很简单的,像平时在窗体上拖控件一样。下面跟着我一步步做:1. 建立一个工程,添加用户控件。2.在打开的窗体内输入控件名称,如:"ucButton",按确定按钮。接下来在空白区域拖放3个.Net控件。如下图:3.编码/// /// C#.Net 设计用户自定义控件 /// C#制作用户转载 2015-01-27 11:44:28 · 1118 阅读 · 0 评论 -
C#调用C++ dll 时,涉及到函数参数类型的转换,这里是C++和C#的类型对照表
//C++中的DLL函数原型為 //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsigned char* 变量名2) //extern "C" __declspec(dllexport) bool 方法名二(const unsigned char* 变量名1, char* 变量名2转载 2015-09-10 14:26:10 · 1036 阅读 · 0 评论 -
Marshal类的两个方法StructureToPtr和PtrToStructure实现序列化
我们主要是使用Marshal类里的两个方法:第一个是StructureToPtr,将数据从托管对象封送到非托管内存块。第二个是PtrToStructure,将数据从非托管内存块封送到新分配的指定类型的托管对象。只要有了这两个相互转换的方法,我们就可以实现序列化了。首先我们先来看下序列化序列化:有一个前提条件,那就是我们必须要知道需要序列化对象的大小。第一步:我们先求出对转载 2015-09-14 10:38:22 · 9445 阅读 · 0 评论 -
深刻理解C#中资源释放
首先,我们需要明确2个概念。第一个就是很多人用.Net写程序,会谈到托管这个概念。那么.Net所指的资源托管到底是什么意思,是相对于所有资源,还是只限于某一方面资源?很多人对此不是很了解,其实.Net所指的托管只是针对内存这一个方面,并不是对于所有的资源;因此对于Stream,数据库的连接,GDI+的相关对象,还有Com对象等等,这些资源并不是受到.Net管理而统称为非托管资源。而对于内存的释转载 2015-11-03 13:43:16 · 4938 阅读 · 0 评论 -
C# 委托实例(跨窗体操作控件)
跨窗体操作控件转载 2015-11-04 13:37:38 · 1040 阅读 · 0 评论 -
C#中 ListView控件行高的巧妙设置
C#中ListView控件Detail显示,是没有行高这个属性的,但可以通过设置imagelist“撑高”行距。 ImageList il=new Imagelist(); //设置高度 il.ImageSize = new Size(1, 20); //绑定listView控件 listView1.SmallImageList = il; 大功告成!转载 2015-10-19 14:02:00 · 3532 阅读 · 0 评论 -
C#调用C++DLL的小总结5---和C++的DLL的联合调试
现在有一个问题,就是如果C#调用C++的DLL,复杂一些的数据传递,或者DLL将数据再传递,那么数据的正确传送与否,怎么办呢?调试下断点看内存中的数据是最好的方法,可是地球人都知道,C#是在托管平台上的,而C++DLL是在非托管平台上的。内存的格式啥的都是不一样的,那怎么办呢?微软早就想到了。方法如下:第一步:在C#的解决方案上右键“属性”---“调试”---勾选“启用非托管代码调试”。转载 2015-09-18 13:30:59 · 485 阅读 · 0 评论 -
C#操作SQL Server数据库
1、概述2、连接字符串的写法3、SqlConnection对象4、SqlCommand对象5、SqlDataReader对象6、DataSet对象7、释放资源1、概述ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤:第一,使用SqlConnection对象连接数据库;第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用;转载 2015-09-24 13:21:23 · 581 阅读 · 0 评论 -
解决:对 PInvoke 函数的调用导致堆栈不对称问题
c# 调用C++dll是报错:问题描述: 在使用托管代码调用非托管代码时,发生“对 PInvoke 函数“UseTwiHikVisionDllTest!UseTwiHikVisionDllTest.TwiHikVision::GetFirstPic”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和转载 2015-10-16 10:24:55 · 8337 阅读 · 0 评论 -
解决C# winForm自定义鼠标样式的两种实现方法详解
第一种:(调用系统API)首先引入两个命名空间using System.Runtime.InteropServices;using System.Reflection;导入API[DllImport("user32.dll")]public static extern IntPtr LoadCursorFromFile(string fileName);[DllIm转载 2015-08-06 12:26:26 · 8163 阅读 · 1 评论 -
C# 托管资源和非托管资源
C#内存释放-托管资源和非托管资源转载 2015-09-07 18:01:53 · 462 阅读 · 0 评论 -
C# Image 加载图片
Image.FromFile 一旦使用后,对应的文件在一直调用其生成的Image对象被Disponse前都不会被解除锁定,这就造成了一个问题,就是在这个图形被解锁前无法对图像进行操作(比如删除,修改等操作).在以前用的过程中曾用过下面三个方法解决问题. 第一种方法,在要进行文件操作前将Image对象销毁.PictureBox picbox;if(picbo转载 2015-01-08 13:54:09 · 18886 阅读 · 0 评论 -
C# 的Brush 及相关颜色的操作
// (实心刷) Rectangle rect1 = new Rectangle(20, 80, 250, 100); SolidBrush sbrush1 = new SolidBrush(Color.DarkOrchid); SolidBrush转载 2015-01-28 11:46:54 · 2756 阅读 · 0 评论 -
C# using用法
昨天的“【windows phone】simple note”中的代码中有一个using的用法,刚开始查看了一些资料说是强制关闭对象的一个命令。今天又查了一些资料,才明白,原来using指令调用了一个方法——Dispose()方法。而Dispose()方法的作用就是释放所有的使用资源。例:public void ExecuteCommand( string connString,转载 2015-01-16 15:05:03 · 445 阅读 · 0 评论 -
C# 用户自定义UserControl控件使用
UserControl控件。 添加UserControl后,按照说法应该出现在ToolBox中,如果找不到,需要设置: 工具-》选项-》Windows窗体设计器-》常规-》工具箱-》AutoToolBoxPopulate 改为TRUE。 这种方法不会针对这个UserControl生成dll。 还有一种方法是,新建一个UserControl工程,这个工程会转载 2015-01-03 21:40:02 · 1333 阅读 · 0 评论 -
C# ArrayList用法
System.Collections.ArrayList类是一个特殊的数组。通过添加和删除元素,就可以动态改变数组的长度。一、优点1. 支持自动改变大小的功能2. 可以灵活的插入元素3. 可以灵活的删除元素4. 可以灵活访问元素二、局限性跟一般的数组比起来,速度上差些三、添加元素1.public virtual int Add(object value);将转载 2015-01-23 09:37:45 · 422 阅读 · 0 评论 -
C#中的Invoke
在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”,初学者往往会想当然地这么写:void ButtonOnClick(object sender,EventArgs e){ button.Text="关闭";}这样的写法运行程序之后,可转载 2015-07-16 10:37:17 · 468 阅读 · 0 评论 -
C# 给对象赋null值会释放内存吗?
比如A a=new A();a=null;这时候a所占用的内存会释放掉吗?还是只是将a的指针改变为null,而new A();产生的数据仍在内存中?另外请问string a="";和string a=string.Empty;是一样的吗? 不一定,这个涉及到GC 垃圾回收机制,具体的回收是由.NET运行时决定的,但是只有对象不再执行任何引用时才会释放,也就是说你的a=null;转载 2015-11-03 13:16:41 · 8346 阅读 · 0 评论