![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#学习
文章平均质量分 94
lvjiyang
这个作者很懒,什么都没留下…
展开
-
C#学习(二十八)——ManualResetEvent的理解和使用
1、C#ManualResetEvent和AutoResetEvent使用笔记一、两者区别1.ManualResetEvent 调用一次Set()后将允许恢复所有被阻塞线程。需手动在调用WaitOne()之后调用Reset()重置信号量状态为非终止,然后再次调用WaitOne()的时候才能继续阻塞线程,反之则不阻塞2.AutoResetEvent,调用一次Set()只能继续被阻塞的一个线程,多次调用Set()才行,但不需手动调用Reset();再次调用WaitOne()的时候又能阻塞线程,也是和前者的转载 2021-01-18 15:11:08 · 8969 阅读 · 0 评论 -
C#学习(二十七)——VS代码的折叠与展开
Ctrl + M + O: 折叠所有方法Ctrl + M + M: 折叠或者展开当前方法Ctrl + M + L: 展开所有方法原创 2020-12-11 15:29:25 · 621 阅读 · 0 评论 -
C#学习(二十六)——C#中的构成:Program.cs、Form1.cs、Form1.Designer.cs
一、 Form.cs和Form.Designer.cs其实是一个类,Visual Studio为了让我们方便管理,用partial关键字把窗体类给拆开了。Form.Designer.cs(窗体的设计类)存放窗体的布局,你的窗体定义了哪些控件,那些控件的名字、属性等等,都是存放在Form.Designer.cs里面的----最好不要在这里写/修改代码;而Form.cs(窗体的逻辑类)则是用来存放处理方法的,比如你的按钮点击事件绑定了Button_Click这个方法,就会出现在Form.cs里;原创 2020-10-10 10:30:54 · 2855 阅读 · 0 评论 -
C#学习(二十五)——如何在PictureBox上画十字架
上图是在picturebox里面画十字架代码如下://加载picturebox的Paint事件 private void pictureBoxImg_Paint(object sender, PaintEventArgs e) { //十字架 PictureBox p = (PictureBox)sender; Pen pp = new Pen(Color.Red, 1);//线为红色,线宽为一个像素.原创 2020-08-26 13:38:55 · 3226 阅读 · 0 评论 -
C#学习(二十四)——DataGridView控件用法介绍
原帖: http://blog.csdn.net/angel20082008/article/details/51718676https://blog.csdn.net/lifeng_beijing/article/details/78272320DataGridView控件在实际应用中非常实用,特别需要表格显示数据时。可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行。假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件原创 2020-08-15 09:18:45 · 2272 阅读 · 0 评论 -
C#学习(二十三)——一维数组和二维数组的转换表示
关键:下标的计算一维->二维一个n个元素的一维数组,转换为r行c列的二维数组对于一维数组中任意一个元素的下标i(0 <= i < n)其对应的二维数组下标为 (i / c, i % c), 显然, 只与列数c有关,而与行数r无关code like thisint[] a = new int[n];int[,] b = new int[r, c];for (int i = 0; i < n; i++) b[i / c, i % c] = a[i];als原创 2020-08-14 14:05:52 · 704 阅读 · 0 评论 -
C#学习(二十二)——线程间操作无效: 从不是创建控件“dataGridView1”的线程访问它
//我有一个方法,从服务里取数据然后赋值给datagirdviewprivate void ReadDgv(){QM_LabBill.WebService1SoapClient aa = new QM_LabBill.WebService1SoapClient();dataGridView1.DataSource = aa.getYGDay();}//然后在窗体加载的时候用线程读取数据private void FmDgv_Load(object sender, EventArgs e){T原创 2020-08-14 12:00:01 · 383 阅读 · 0 评论 -
C#学习(二十一)——Tcp协议收发数据 && Socket客户端监听服务器端处理方案
Tcp协议收发数据 && Socket客户端监听服务器端处理方案1.https://blog.csdn.net/dl962454/article/details/78990735?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blo原创 2020-08-14 10:26:19 · 1132 阅读 · 0 评论 -
C#学习(二十)——使用DataGridView显示二维数组中的内容
int[,] TABLE = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } }; DataTable dt = new DataTable(); for (int i = 0; i < TABLE.GetLength(1); i++) dt.Columns.Add(i.ToString(), typeof(int)); for (int i = 0; i < TA原创 2020-08-14 10:20:03 · 789 阅读 · 0 评论 -
C#学习(十九)——C#中Split分隔字符串的应用
1、用字符串分隔:using System.Text.RegularExpressions;string str=“aaajsbbbjsccc”;string[] sArray=Regex.Split(str,“js”,RegexOptions.IgnoreCase);foreach (string i in sArray) Response.Write(i.ToString() + “”);输出结果:aaabbbccc2、用多个字符来分隔:string str=“aaajbbbsccc原创 2020-08-13 17:22:48 · 192 阅读 · 1 评论 -
C#学习(十八)——CheckForIllegalCrossThreadCalls
CHECKFORILLEGALCROSSTHREADCALLS= FALSE多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,这时如果想要访问窗口的控件,发现无法对其控制。这时可将窗口构造函数中的CheckForIllegalCrossThreadCalls设置为false;然后就能安全的访问窗体控件。如果捕获了对错误线程的调用,则为 true;否则为 false。System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls原创 2020-08-13 14:58:06 · 2544 阅读 · 0 评论 -
C#学习(十七)————ToString类型
int t=45;string s1 = t.ToString(“F3”);//表示转换后,小数点后面的数的个数string s2 = t.ToString(“X3”);//"D"相当于"X"表示转换后,输出的数字的个数string s3 = t.ToString(“F1”);//"D"相当于"X"表示转换后,保留一位小数string.Format("{0:d2}",t);// 转化时间//十进制转二进制Console.WriteLine(Convert.ToString(69, 2));/原创 2020-08-11 14:40:22 · 1717 阅读 · 0 评论 -
C#学习(十六)——基于C#与OpenCVSharp的图像处理软件
基于OpenCVSharp的图像处理软件:https://blog.csdn.net/you_big_father/article/details/86088531?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-9.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMach原创 2020-07-13 10:58:23 · 1190 阅读 · 0 评论 -
C#学习(十五)——窗体控件用法大全
C#控件及常用设计整理1、窗体1.1、常用属性**(1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。(2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种: Normal (窗体正常显示)、 Minimized(窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示)。(3)StartPosition属性:用来获取或设置运行时窗体的起始位置。(4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的原创 2020-07-01 20:16:12 · 11227 阅读 · 0 评论 -
C#学习(十四)——C# “从元数据”
所谓元数据.其实是指由微软所封装的类…这些类你可以查看.但是无法修改。元数据是一种二进制信息,用以对存储在公共语言运行库可移植可执行文件 (PE) 文件或存储在内存中的程序进行描述。将您的代码编译为 PE 文件时,便会将元数据插入到该文件的一部分中,而将代码转换为 Microsoft 中间语言 (MSIL) 并将其插入到该文件的另一部分中。在模块或程序集中定义和引用的每个类型和成员都将在元数据中进行说明。当执行代码时,运行库将元数据加载到内存中,并引用它来发现有关代码的类、成员、继承等信息。元数据以非特原创 2020-06-30 13:54:40 · 10619 阅读 · 0 评论 -
C#学习(十三)——C# 使用 GDI+ 画图
GDI - 图形设备接口(Graphics Device Interface)GDI是图形设备接口的英文缩写,主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形和图像输出。GDI的出现使程序员无需要关心硬件设备及设备正常驱动,就可以将应用程序的输出转化为硬件设备上的输出和构成,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Wind原创 2020-06-30 13:48:29 · 1587 阅读 · 0 评论 -
C#学习(十二)——创建DLL(动态链接库)及其使用
一、DLL 与应用程序动态链接库(也称为 DLL ,即为“ Dynamic Link Library ”的缩写)是 Microsoft Windows 最重要的组成要素之一,打开 Windows 系统文件夹,你会发现文件夹中有很多 DLL 文件, Windows 就是将一些主要的系统功能以 DLL 模块的形式实现。动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,其中包含能被程序或其它 DLL 调用来完成一定操作的函数 ( 方法。注: C# 中一般称为“方法” ) ,但这些函数不是执行程原创 2020-06-30 13:41:13 · 4402 阅读 · 0 评论 -
C#学习(十一)——IntPtr类型
1.C#中的IntPtr类型被称之为“平台特定的整数类型”,用于本机资源,例如窗口句柄。2.资源的大小取决于使用的硬件和操作系统,即此类型的实例在32位硬件和操作系统中将是32位,在64位硬件和操作系统中将是64位;但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。3.在调用API函数时,类似含有窗口句柄参数(HANDLE)的原型函数,应显示地声明为IntPtr类型。4.IntPtr类型对多线程操作是安全的。5. int 和IntPtr互转int i=1; IntPtr p=new I转载 2020-06-30 12:56:28 · 12536 阅读 · 3 评论 -
C#学习(十)——File和FileStream的用法
原文链接:https://blog.csdn.net/qq_41209575/article/details/89178020https://blog.csdn.net/boy_of_god/article/details/80617201https://blog.csdn.net/susubuhui/article/details/3789047https://blog.csdn.net/swin16/article/details/80256123https://blog.csdn.net/q原创 2020-06-30 11:00:15 · 303 阅读 · 0 评论 -
C#学习(九)——异常:try & catch使用方法
源代码如下://-----------------------------------------------// CsDateProperties.cs //-----------------------------------------------using ystem; class CsDateProperties{ public static void Main() { Date mydate = newDate();原创 2020-06-23 10:20:33 · 4517 阅读 · 0 评论 -
C#学习(七)——static的用法
C# 之 static的用法详解 有的东西你天天在用,但未必就代表你真正了解它,正如我之前所了解的 static 。一、静态类静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。1、静态类的主要特性:[1] 仅包含静态成员。[2] 无法实例化。[3] 静态类的本质,是一个抽象的密封类,所以不能被继原创 2020-06-23 09:31:08 · 274 阅读 · 0 评论 -
C# 学习(六)—— 委托、 泛型委托与Lambda表达式
1 委托的含义当需要将一个方法当作另一个方法的参数时,对于某些语言例如C/C++等,需要用函数指针来处理。而对于C#来说,则使用委托机制。例如,当我们需要对一个泛型集合ICollection进行排序时,我们定义一个Sort方法,那么这个方法需要哪些参数才能进行排序呢?首先,肯定需要一个Collection对象作为输入参数,代表要排序的对象集合;然后,Sort方法还需要知道如何比较两个对象,经过比较之后才能决定让哪个对象排在前面。因此,Sort方法需要第二个参数,这个参数是一个方法,代表着比较排序对象的方转载 2020-06-22 14:37:35 · 359 阅读 · 0 评论 -
C#学习(五)——C# 委托(Delegate)
C# 委托(Delegate)C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。声明委托(Delegate)委托声明决定了可由该委托引用的方法。委托可指向一个与其具有相同标签的方法。例如,假设有一个委托:public delegate int MyDelega原创 2020-06-22 14:10:32 · 385 阅读 · 0 评论 -
C#学习(四)——三纲注释的设置问题
C#中新建的类库添加注释时,应注意以下问题:1、编译动态类库时命名空间要规范,一般不要和类同名,命名空间一般定义格式:项目名+类文件名;2、动态类库中,类、方法的注释都采用下列方式注释:类注释的格式:/// <summary>/// 文件名:Ini处理类//// 文件功能描述:读写Ini文件//// 版权所有:Copyright (C) ZGM//// 创建标识:2011.12.13/ /// 修改描述://// </summary>方法注释的格式:原创 2020-06-22 12:54:24 · 331 阅读 · 0 评论 -
C#学习(三)——委托与事件
在面试中,委托与事件几乎是必问的。如果面试官和面试者互不相识,面试官不问委托,严重怀疑这家公司的技术水平,这个可以说是C#入门与掌握的分水岭之一,非常重要。对委托和事件做一个全面的整理和归纳。这里重在理解,只有理解了才能真正掌握它。为什么C#会有委托事件?解决观察者模式的缺陷。这里又引申出一个问题,什么是观察者模式,观察者模式的缺陷又是什么?在回答这个问题前,我们其实已经知道一个答案,那就是先有设计模式中的观察者模式,再有委托事件这一技术。它有一个前后顺序,如果你要彻底学会委托事件,那么就要先学会观察原创 2020-06-22 11:55:51 · 321 阅读 · 0 评论 -
C#学习(二)——《大话模式设计》附录A
一、类与实例一切事物皆为对象,即所有的东西都是对象。对象是一个自包含的实体,用一组可识别的特性和行为来标识。 private void button1_Click(object sender, EventArgs e) { MessageBox.Show("喵"); }`````csharp private void button1_Click(object sender, EventArgs e) {原创 2020-06-19 16:58:45 · 272 阅读 · 0 评论 -
C#学习(一)——类、对象、方法和属性详解
C#类、对象、方法和属性详解一、相关概念:1、对象:现实世界中的实体(世间万物皆对象)2、类:具有相似属性和方法的对象的集合3、面向对象程序设计的特点:封装 继承 多态4、对象的三要素:属性(对象是什么)、方法(对象能做什么)、事件(对象如何响应)☆相互关系:类是对象的抽象,对象是类的实例,类是一种抽象的分类,对象则是具体事物。比如如果车是一个类,某个人的一辆奔驰车就是一个对象,车的颜色质量就是它的属性,启动、停止这些动作则可以定义为车的方法。二、类的定义与语法1、定义类:[修饰符] c转载 2020-06-18 16:30:46 · 2222 阅读 · 2 评论 -
C#学习(八)——框架与类库的区别
#框架与类库的区别##1.**组件(Component)**是一个含义很大的概念,一般是指软件系统的一部分,承担了特定的职责,可以独立于整个系统进行开发和测试,一个良好设计的组件应该可以在不同的软件系统中被使用(可复用)。例如V8引擎是Chrome浏览器的一部分,负责运行javascript代码,这里V8引擎就可以视为一个组件。V8引擎同时也是Node.js的javascript解释器,这体现了组件的可复用性。**库(Library)**是一系列预先定义好的数据结构和函数(对于面向对象语言来说,是类)的原创 2020-06-18 16:06:51 · 810 阅读 · 0 评论