![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
云中飞鸿--张*峰
这个作者很懒,什么都没留下…
展开
-
Form窗体
1、“关闭”按钮的单击事件中,关闭当前窗体,并提示。双击“关闭”按钮2、“发送”按钮的单击事件中,隐藏当前窗口。双击“发送”按钮3、让子窗体受到MDI主窗体的控制3.1 在Form2的"发送"按钮的鼠标单击事件中:设置窗体3 和 Form2窗体,具有同一个父窗体3.2 在Form3中的“返回”按钮事件中:设置Form2 和 Form3具有相同的父窗体4、窗体传值...原创 2019-07-23 11:25:38 · 898 阅读 · 0 评论 -
(MDI)多文档界面的子窗口排列
1、Form.LayoutMdi(MdiLayout)1.1 LayoutMdi方法:在 MDI 父窗体内排列 多文档界面 (MDI) 子窗体。1.2 MdiLayout Enum:指定 MDI 父窗口中多文档界面 (MDI) 子窗口的布局MdiLayout.Cascade方法:子窗体层叠在父窗体内MdiLayout.TileHorizontal方法:子窗...原创 2019-07-22 17:07:39 · 2837 阅读 · 0 评论 -
C#图片转成流,流转成图片,字节转图片,图片转字节的方法
图片转成流Bitmap b = new Bitmap(Server.MapPath(ppath));Stream ms = new MemoryStream();b.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);流转成图片MemoryStream ms = new MemoryStream(Bytes);return Bi...转载 2019-07-19 17:07:44 · 2799 阅读 · 0 评论 -
WinForm中的Brush——SolidBrush、HatchBrush、LinearGradientBrush、PathGradientBrush、TexturedBrush
一、SolidBrush:默认的画刷,单色笔刷,填充一片颜色/// <summary> /// SolidBrush /// </summary> /// <param name="sender"></param> /// <param name="e"></...转载 2019-07-19 10:22:53 · 5453 阅读 · 0 评论 -
标题栏、菜单栏、工具栏、状态栏
1、标题栏标题栏在计算机软件中,位于窗口最顶部。显示当前应用程序名、文件名等,在许多窗口中,标题栏也包含程序图标、“最小化”、“最大化”、“还原”和“关闭”按钮,可以简单地对窗口进行操作。2、菜单栏菜单栏实际是一种树型结构,为软件的大多数功能提供功能入口。 点击以后,即可显示出菜单项。菜单栏是按照程序功能分组排列的按钮集合,在标题栏下的水平栏。通常有“文件、编辑、查看、工具、帮助” ...原创 2019-07-15 11:58:02 · 30945 阅读 · 0 评论 -
将c#窗体从一个项目1移动到另外一个项目2中
1、将窗体的3个文件从项目1中复制到项目2中2、项目右键--添加--现有项--点击GrabDemoDlg.cs文件注意:不要同时把3个文件都添加进去,只需要添加一个GrabDemoDlg.cs文件。...原创 2019-07-12 10:53:25 · 1829 阅读 · 1 评论 -
c#控件的Anchor属性、Dock属性--影响布局
1、Anchor属性:定位控件和父窗口间的相对位置。当父窗口变化时,控件也跟着变化。 1.1 比如: 设置控件的Anchor属性为Top Left时,当父窗口放大/缩小时,此控件以父窗口的顶边Top 和 左边Left为参照依据,进行放大/缩小。 设置控件的Anchor属性为Bottom Right时,当父窗口放大/缩小时,此控件以父窗口的顶边Bottom 和 ...转载 2019-07-11 16:14:27 · 5785 阅读 · 0 评论 -
C#中的构成:Program.cs、Form1.cs、Form1.Designer.cs
一、 Form.cs和Form.Designer.cs其实是一个类,Visual Studio为了让我们方便管理,用partial关键字把窗体类给拆开了。1.Form.Designer.cs(窗体的设计类)存放窗体的布局,你的窗体定义了哪些控件,那些控件的名字、属性等等,都是存放在Form.Designer.cs里面的----最好不要在这里写/修改代码;2.而Form.cs(窗体的逻辑...转载 2019-07-10 17:19:27 · 13403 阅读 · 0 评论 -
C#中的ResumeLayout()、PerformLayout()方法
ResumeLayout方法可以取消挂起的布局,使以后的布局均有效,但是并不能保证布局的立即执行。如果要使布局立即执行(即立即触发Layout事件),可以调用PerformLayout方法强制布局,强制控件将布局逻辑应用于自身及其子控件。...原创 2019-07-10 16:59:57 · 6467 阅读 · 0 评论 -
C# 控件的Tag属性
之前一直觉得控件的Tag属性跟TextBox的Text属性类似,只是用来保存用户对控件标记的文本信息或者布尔值,所以在看到下边的代码之后,就感觉有点看不懂了。 <span style="font-size:18px;">ListViewItem item = listViewChannels.Items.Add(DeviceName); item.Tag = ipcC...原创 2019-07-10 14:17:57 · 9789 阅读 · 1 评论 -
windows form (窗体) 之间传值小结
转载至:https://blog.csdn.net/tjvictor/article/details/824617在windows form之间传值,我总结了有四个方法:全局变量、属性、窗体构造函数和delegate。第一个全局变量:这个最简单,只要把变量描述成static就可以了,在form2中直接引用form1的变量,代码如下:在form1中定义一个static变量publ...转载 2019-07-10 14:09:21 · 750 阅读 · 0 评论 -
c#控件
突然发现一个关于c#窗体控件的网站还不错:http://c.biancheng.net/view/2946.html还一个微软.net网址为:https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.openfiledialog?view=netframework-4.8一、公共控件出发点:本来是想找一个详细介绍c...原创 2019-07-08 17:58:29 · 516 阅读 · 0 评论 -
c#中使用线程的方式
1、使用Thread//将函数DoWork(),放入一个新线程中,并开启这个线程Thread thread = new Thread(() => this.DoWork()); //或者 Thread thread = new Thread(new ThreadStart(DoWork));thread.Start();2、使用Task 2.1 方式1 Task...原创 2019-07-08 14:14:03 · 353 阅读 · 0 评论 -
C#--winform控件
1、窗体1、常用属性(1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。(2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种: Normal (窗体正常显示)、 Minimized(窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示)。(3)StartPosition属性:用来获取或设置运行时窗体的起始位置。(4)...转载 2019-07-08 11:56:10 · 554 阅读 · 0 评论 -
Parallel.For循环 和 Parallel.ForEach循环
大多时候,我们的循环结构的每一次迭代 依赖于上一次迭代的计算或行为。但是,有的时候又不是这样。如果迭代之间彼此独立,并且程序运行在多核处理器的机器上,如果能将不同的迭代放在不同的处理器上并行处理的话,将会受益匪浅。Parallel.For 和 Parallel.ForEach结构就是这样做的。一、Parallel.For1、Parallel.For方法有12个重载:public s...原创 2019-07-01 16:50:56 · 4854 阅读 · 0 评论 -
C# 取消异步操作
一、经常使用的方式1、首先构建一个CancellationTokenSource实例var cts=new CancellationTokenSource();2、取消任务cts.Cancel();3、再构建一个CancellationToken实例CancellationToken token = cts.Token;4、token.IsCancellationReq...原创 2019-06-24 22:26:40 · 4793 阅读 · 0 评论 -
c#的xml文件中的 xmlns 和 xmlns:x
xmlns,是xml namespace的缩写。在xml中,所有的元素都是自己定义的,当两个不同的文档使用相同的元素名时,xml paser就不知道该去解析哪个,就会发生命名冲突。所以需要一种区分的手段,xml中使用namespace进行区分,唯一确定一个元素,类似于c++中的namespace。xmlns 属性专门指默认的 xmlns 命名空间。在默认的 xmlns 命名空间...转载 2019-06-24 13:51:37 · 2824 阅读 · 0 评论 -
Main函数 和 Mainwindow函数 区别
Main函数,是非窗体程序入口函数Mainwindow函数,是窗体程序的入口函数初步理解原创 2019-06-24 12:01:29 · 1596 阅读 · 0 评论 -
c#--使用异步Lambda表达式
一、预备知识二、异步Lambda表达式using System.Threading.Tasks;using System.Windows;namespace AsyncLambda{ public partial class MainWindow : Window { public MainWindow() {...原创 2019-06-24 11:48:05 · 1646 阅读 · 1 评论 -
Task.Yield方法在GUI程序中非常有用,可以中断大量工作,让其他任务使用处理器
using System;using System.Threading.Tasks;static class DoStuff{ public static async Task<int> FindSeriesSum( int i1 ) { int sum = 0; for ( int i=0; i < i1; i++ )...原创 2019-06-24 10:59:30 · 331 阅读 · 0 评论 -
async/await特性--在GUI程序中执行异步操作
不仅仅是控制台应用程序,实际上:异步方法在GUI程序中尤为有用。原因:GUI程序在设计上就要求,所有的显示变化都必须在主GUI线程中完成,如 点击按钮、展示标签、移动窗体等。Windows程序是通过消息来实现这些动作的,消息被放入由消息泵管理的消息队列中,消息泵从队列中取出一条消息,并调用它的处理程序代码。当 处理程序代码 完成时,消息泵获取下一条消息并循环这个过程。下面展示同步/异步的区...原创 2019-06-24 09:54:55 · 233 阅读 · 0 评论 -
Task.Delay() 和 Thread.Sleep() 区别
一、1、Thread.Sleep 是同步延迟,Task.Delay异步延迟。2、Thread.Sleep 会阻塞线程,Task.Delay不会。3、Thread.Sleep不能取消,Task.Delay可以。4.Task.Delay() 比 Thread.Sleep() 消耗更多的资源,但是Task.Delay()可用于为方法返回Task类型;或者根据CancellationTo...原创 2019-06-22 18:21:12 · 7515 阅读 · 0 评论 -
c#--在异步方法中异步地等待任务
1、Task.WhenAll--4个重载方法2、Task.WhenAny--4个重载方法原创 2019-06-22 18:09:42 · 1354 阅读 · 0 评论 -
c#--在异步方法的调用方法中同步地等待任务
异步是最终目的,多线程只是我们实现异步的一种手段1、同步与异步的区别同步(Synchronous):在执行某个操作时,应用程序必须等待该操作执行完成后才能继续执行。异步(Asynchronous):在执行某个操作时,应用程序可在异步操作执行时继续执行。实质:异步操作,启动了新的线程,主线程与方法线程并行执行。2、如果在等待某个特殊Task对象完成,然后再继续 Ta...原创 2019-06-22 11:16:02 · 1749 阅读 · 0 评论 -
#region和#endregion的作用
1、 加#region和#endregion的作用主要是 :可以将这块区域的代码折叠起来,便于查看,与 #region同一行的后面 可以跟任意文字以对该区域进行说明。2、#region是c#预处理器指令 #region是一个分块预处理命令,它主要用于编辑代码的分段,在编译时会被自动删除。 #region使你可以在使用VS代码编辑器的大纲显示功能时指定可展开或折叠...转载 2019-06-19 14:47:40 · 8325 阅读 · 0 评论 -
c#中的Lambda表达式(是一个委托)
只要有委托参数类型的地方,就可以使用Lambda表达式。LAMBDA运算符 “=>” 的左边列出了右侧Lambda主体中需要用到的参数,右边定义了Lambda的主体部分。---------------------(一)输入参数在Lambda表达式中,输入参数是Lambda运算符的左边部分。1.Lambda表达式参数列表中的参数必须在:参数数量、类型、位置 ,上与委...原创 2019-06-19 09:29:57 · 5273 阅读 · 0 评论 -
Task.Run()方法的8个重载
1、8个重载方法以下这4个重载方法,返回类型是Task以下这4个重载方法,返回类型是Task<TResult>2、原创 2019-06-18 15:48:51 · 789 阅读 · 0 评论 -
await表达式
1、定义await表达式指定了一个异步执行的任务。由await关键字 和 一个空闲对象(称为任务task)组成。这个任务可能是一个Task类型的对象,也可能不是。默认情况下,这个任务在当前线程异步运行。然而实际上,并不需要构建自己的awaitable,而应该使用Task类,它是awaitable类型。2、.NET4.5中,微软发布了大量新的和修订的异步方法(在BCL中),它...原创 2019-06-18 15:25:56 · 1108 阅读 · 0 评论 -
进程 与 线程
进程包含资源,如Window句柄、文件系统句柄 或其他内核对象,每个进程都分配了虚拟内存。一个进程至少包含一个线程。操作系统会调度线程。线程有一个优先级、实际上正在处理的程序的位置计数器、一个存储其局部变量的栈。每个线程都有自己的栈,但程序代码的内存和堆,由一个进程的所有线程共享。这使得一个进程的所有线程之间的通信非常快--因为该进程的所有线程都寻址相同的虚拟内存。但是,这也使处理比较困难,因...原创 2019-06-18 14:08:42 · 90 阅读 · 0 评论 -
异步方法的3种返回类型
1、3种返回类型注意:返回类型为Task<T>的异步方法:方法内必须要有return方法,而且要返回一个T类型的值;返回类型为Task的方法:方法内可以返回一个Task类型的对象(也可以没有return语句),即使异步方法中出现了return语句,也不会返回任何东西。2、return语句...原创 2019-06-18 10:50:29 · 2429 阅读 · 0 评论 -
c#的async/await特性(用于创建异步方法)
1、同步方法:一个程序调用某个方法,等待此方法执行完所有处理后才继续执行,这样的方法叫同步方法。异步方法:一个程序调用某个方法,此方法在处理完成之前,就返回到调用方法。2、async/await特性async/await特性由3个部分组成:1.调用方法:该方法调用异步方法,然后在异步方法执行其任务的时候继续执行;2.异步方法:该方法异步执行其工作,然后立即返回到调用方法;...原创 2019-06-18 09:54:49 · 450 阅读 · 0 评论 -
异步方法
在语法上,异步方法具有如下特点:1、方法头中包含async方法修饰符;2、包含一个或多个await表达式,表示可以异步完成的任务;3、必须具备以下3种返回类型之一。void、Task、Task<T>4、异步方法的参数可以为任意类型、任意数量,但不能为out或ref参数;5、异步方法的名称应该以Async为后缀;6、除了方法以外,Lambda表达式 和 匿名方法,...原创 2019-06-18 09:40:39 · 1054 阅读 · 0 评论 -
要将你的方法传递给Task.Run()方法,需要基于该方法创建一个委托
创建委托的3种方式:using System;using System.Threading.Tasks;class MyClass{ public int Get10() // Func<int> compatible { return 10; } public async Task DoWorkAsync() { //...原创 2019-06-18 09:13:24 · 4081 阅读 · 0 评论 -
协变和逆变个人理解(参考c#高级编程5.4-泛型接口)
一、协变1.1 接口IIndex<out T>1.2 子类Rectangle1.3 父类Shape1.4 类RectangleCollection二、逆变2.1 接口IDisplay<in T>2.2 类ShapeDisplay三、主程序...原创 2019-06-02 16:44:57 · 136 阅读 · 0 评论 -
协变和逆变
二、真正的协变和逆变概念:1、以前的泛型系统(或者说没有in/out关键字时),是不能“变”的,无论是“逆”还是“顺(协)”。2、当前仅支持接口和委托的逆变与协变 ,不支持类和方法。但数组也有协变性。3、值类型不参与逆变与协变。协变:Foo<ParentClass> = Foo<ChildClass>public class TestOut<T&...转载 2019-06-02 10:51:40 · 207 阅读 · 0 评论 -
C#中的in和out关键字
如果泛型参数标记为out,泛型类成员参数又定义了T类型的话则编译不通过。同样的方法我们来测试下逆变: 总结 out:代表协变,只能当返回值类型使用,不能作为方法实参 in:代表逆变,只能用作方法实参,不能用作返回值类型。 ...转载 2019-06-02 09:59:57 · 5888 阅读 · 0 评论 -
类型转换:装箱(值类型>引用类型)和拆箱(引用类型>值类型)
List<String> files = new List<string>(); 这个List是泛型List原本的List当中存储的类型为object,因为object是所有类型的基类,所以在List当中是可以存储所有类型值得。。。但是值类型到object和object到值类型,属于装箱和拆箱操作,效率比较低,所以就有了泛型List在后面的<>当...转载 2019-06-01 18:37:58 · 326 阅读 · 0 评论 -
C#中的签名是什么意思?
签名指的是返回值和参数。原创 2019-05-27 11:51:45 · 1954 阅读 · 0 评论 -
C#中(int)、Conver.Toint32()、int.Parse()三种类型转换方式的区别
1、(int)可用于单精度、双精度等其他数值类型的转换(到整型int),不能用于转换string类型转换为int类型,系统会报错,程序是不能运行。注意:Double或Float被转换成int类型时,小数部分不进行四舍五入,结果是取整的2、Convert.ToInt32() 把string/object/数值类型 转换为Int32类型使用Convert.ToInt32():double或...原创 2019-05-23 20:15:46 · 774 阅读 · 0 评论 -
不安全代码:只会在使用 /unsafe 编译的情况下出现
在项目->右键属性页面->生成 里面,把是否包含unsafe代码的选项选上原创 2019-05-23 19:14:25 · 1965 阅读 · 0 评论