C#
文章平均质量分 78
前路漫漫其修远兮
主要从事与C#.NET相关的学习
展开
-
Winform中DataGridView使用的详细介绍
单元格和组(Cells and Bands)转载来自【https://www.cnblogs.com/xiaofengfeng/archive/2011/04/16/2018504.html】DataGridView由两种基本的对象组成:单元格(cell)和组(band)。所有的单元格都继承自DataGridViewCell基类。 两种类型的组(或称集合)DataGridViewColumn和DataGridViewRow都继承自DataGridViewBand 基类,表示一组结合在一起的单元格。Da原创 2020-06-22 17:06:34 · 3701 阅读 · 0 评论 -
TreeView通过读取XML动态添加父节点和子节点,并且如何给父节点和子节点添加不同的图片
xml文件的读写可以参考我以前的博客【xm基础知识】【基于DOM的XML文档的读,写,修改代码实例】【XML文件的读写-------基于DOM的XML文件操作】xml文件可以在我的资源中的下载,点击这里代码示例: private void button7_Click(object sender, EventArgs e) { string xmlpath = Application.StartupPath + "//D原创 2020-06-27 12:30:26 · 444 阅读 · 0 评论 -
在zedGraph曲线上显示数据,显示波峰,寻峰算法的实现
寻峰算法的代码可以在我的上篇博客中查看C#中读取.mat文件,然后实现寻峰算法核心代码是这部分 LineItem line = zedGraphControl1.GraphPane.AddCurve("", list1, Color.Red, SymbolType.None);//绘制图表 line.Line.Width = 2; for(int n=0;n< index.Length;n++) {原创 2020-06-11 11:19:27 · 1501 阅读 · 0 评论 -
WPF和winform中使用ZedGraph
首先添加两个dll文件:WindowsFormsIntegration.dll,System.Windows.Forms.dll。2.添加ZedGraph.dll3.在WPF的XAML文件中代码如下:&amp;amp;amp;lt;Window x:Class=&amp;amp;quot;WpfZedgraph.MainWindow&amp;amp;quot; xmlns=&amp;amp;quot;http:原创 2018-11-08 22:30:48 · 1955 阅读 · 0 评论 -
TreeView的使用,如何在子节点中插入图片和事件
废话不多说直接上代码<TreeView x:Name="treeView" HorizontalAlignment="Stretch" Grid.Row="1" BorderThickness="2"> <TreeViewItem Header="井号" BorderThickness="0" > <TreeVie原创 2020-05-08 20:29:28 · 535 阅读 · 0 评论 -
在Winform中ListView的应用
ListView属性用于获取或设置项在控件中的显示方式。有以下几种//每项显示在不同的行上,并带有关于列中所排列的各项的进一步信息。最左边的列包含一个小图标和标签,后面的类包含应用程序指定的子项。列显示一个标头,她可以显示列的标题。listView1.View = View.Details;//每个项都显示为一个最大化图标,在他的下面有一个标签listView1.View = View.L...原创 2019-12-11 22:10:34 · 553 阅读 · 0 评论 -
socket错误:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败
最近遇到这个问题绞尽脑子1、在cmd.exe中 Ping 10.12.13.77发现下位机是通信正常的,说明物理线路是正常的。2.查看是不是某个端口被占用输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是8000,首先找到它,但是没有找到,说明没有被占用。...转载 2020-08-23 10:25:43 · 26876 阅读 · 0 评论 -
C#加密知识(Windows数据保护、对称加密、非对称加密等)
.NET的加密方式有以下几种1.Windows数据保护特点:管理秘钥数量是0,速度快,由用户的密码决定强度,备注:使用隐式生成的密钥对字节数组进行加密和解密。以下代码简单演示了加密和解密的过程,注意要添加引用System.Security.dllusing System.Security.Cryptography;using System.Security; byte[] origi...原创 2020-04-20 21:12:01 · 499 阅读 · 0 评论 -
C#数据类型-隐式转换和显示转换,以及对应“栈”和“堆”的关系
null可直接赋值给字符串变量,表明变量为空,不指向任何位置,只能将null赋值给引用类型、指针类型和可空值类型。注意:将null值赋值给string变量和为空变量赋值"“不是一个概念,null意味着变量无任何值,而”"意味着有一个"空白字符串"的值。数据类型转换1.显示转换考虑将long值转换成int的情形,long的容量比int大,所以转换可能丢失数据——long值可能大于int能容纳的...原创 2020-04-30 23:15:53 · 256 阅读 · 0 评论 -
c#汇总类所涉及知识的学习笔记
类是面对对象编程的三个主要特征——封装,继承和多态性的基础。1.规范的写法一般将每个类都放到他自己的文件中,用类名进行命名。2.在面对对象的术语中,在类中存储数据的变量称为成员变量,但在C#中更标更规范的字段。实例字段是在类的级别上声明的变量用于存储与对象(实例)关联的数据。3.设置和获取字段中的数据,如果字段不包含static修饰符,这意味着它不是实例字段。它只能从其包容类的实例(对象)中...原创 2020-05-03 22:05:54 · 194 阅读 · 0 评论 -
DataGridView控件的使用
例:创建了一个实例;禁止在datagridview控件中添加/删除禁用datagridview控件的自动排序,使datagridview控件各行显示不同的颜色,使datagirdview控件在选中行呈现不同颜色和选择datagridview控件中的某行时,将详细信息显示在textbox文本框中。 string strcon = "Server=YXZ-PC;User Id=sa;Pwd=yanx...原创 2019-03-02 19:09:36 · 852 阅读 · 0 评论 -
WPF资源和样式
对象资源资源集合资源被存储在Resouces属性中,这是一个键值对的集合类型,实例化位ResourceDictionary对象。为了定义资源,必须要通过x:key属性来为资源分配一个键。在同一资源集合中,键名称必须唯一。在使用资源时,会先从元素树所引用的资源集合中向上找,直到找到Key为止。代码示例: <Window.Resources> <ImageBr...原创 2019-05-14 16:54:02 · 1027 阅读 · 0 评论 -
C#使用GetFileSystemInfos方法遍历文件夹
遍历文件夹时可以分别使用DirectoryInfo类提供的GetDirectories方法、GetFiles方法和GetFileSystemInfos方法。GetDirectories方法值遍历文件夹中的子文件,GetFiles方法遍历文件夹中的文件。举例说明使用GetFileSystemInfos方法遍历文件夹listView1.Items.Clear(); if(...转载 2019-11-25 18:48:27 · 2866 阅读 · 0 评论 -
Substring方法截取字符串,Replace,Remove删除字符串,Split分割字符串,Trim去除空白内容,Insert字符串插入
截取字符串Substring可以截取字符串中指定位置和指定长度的子字符串public string Substring(int startIndex)// startIndex:子字符串的起始位置的索引public string Substring(int startIndex,int length)// length:子字符串中的字符数string strFile = "Program...原创 2019-05-29 15:25:45 · 4621 阅读 · 0 评论 -
C#的重要概念:结构和类的介绍,运用
结构结构通常用来封装一组相关的变量,包装成一个整体使用。结构中可以包含构造函数、常量、字段、属性、运算符、事件和嵌套类型。C#中使用struct关键字来声明结构,语法如下:结构修饰符 struct 结构名{}结构的使用 static void Main(string[] args) { Rect rect1;//实例化矩形结构,不能使用new...原创 2019-07-22 14:44:18 · 726 阅读 · 0 评论 -
WPF的布局控件:Grid,StackPanel,DockPanl,Canvas,WrapPanel, UniformGrid
1.使用StackPanel面板进行简单布局该面板简单的在单行或单列中以堆栈形式放置其子元素。<Window x:Class="WpfApplication6.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schem...转载 2019-05-01 20:34:11 · 661 阅读 · 0 评论 -
WPF经典编程模式MVVM介绍及其简单的实例
一、MVVM理论知识WPF技术的主要特点是数据驱动UI,所以再使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时,WPF会自动发出通知去更新UI。使用WPF开发中,经典的编程模式时MVVM,是为WPF量身定做的模式,改模式充分利用了WPF的数据绑定机制,最大限度的减低了XMAL和CS文件的耦合度。与WinForm开发相比,我们一般在后台代码中会使用控件的名字来操作控件的属性来更新UI,而在WPF中通常是通过数据绑定来更新UI;在响应用户操作上,WinForm是通过控件转载 2020-12-21 16:59:21 · 1508 阅读 · 0 评论 -
C#GDI+绘图(1)+介绍和基础
GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在C#.NET中,使用GDI+处理(2D)的图形和图像,使用Directx处理三维(3D)的图形和图像,图形图像处理用到的主要命名空间是System.Drawing:提供了对GDI+基本图形功能的访问,主要有Graphics类、Bitmap类;Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等。GDI+绘图要用到的主要工具:画板:通过Graphic转载 2020-12-08 16:25:07 · 427 阅读 · 0 评论 -
C#实现链表的增加,查找,修改和删除
直接上代码,封装好的类using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp2{ public interface IClinkList//定义链表接口 { void AppendList(ListNode node);//进入链表 voi转载 2020-10-02 09:22:10 · 1749 阅读 · 0 评论 -
委托和事件
应用程序必须暂停它当前正在做的事情,转为处理另一个任务,任务完成之后,程序可以从当初暂停的地方恢复执行。这正是事件和委托的用途。委托是指向一个方法的指针,而且我们采取和调用方法一样的方式来调用它。调用一个委托时,”运行时“实际执行的是委托所引用的方法。可以动态的更改一个委托所引用的方法,事调用一个委托的代码每次都运行一个不同的方法。委托的优势是能引用多个方法。每个方法都具有相同的形式;它们都不...原创 2019-01-11 10:41:00 · 2323 阅读 · 0 评论 -
抽象类与抽象方法,抽象类与接口的区别
具体语法访问修饰符 abstract calss 类名:基类或接口{}一般将父类定义为抽象类,继承树的顶端为抽象类。在抽象类中声明方法时,如果加上abstract关键字,则为抽象方法,抽象方法没有方法体,本身没有任何意义,除非被重写。抽象方法必须在抽象类中,不能使用virtual、static和private修饰符。当抽象类派生一个非抽象类时,需要在飞抽象类中重写抽象方法,以提供具...原创 2019-11-21 15:32:37 · 220 阅读 · 0 评论 -
C#中利用Dictionary进行基于键值的元素快速查找
它的样式是Dictionary<TKey,TValue> Class,TKey表示字典中键的类型,TValue表示字典中值的类型,任何键都必须是唯一的。以下是关于官方示例的引用 static void Main(string[] args) { Dictionary<string, string> openWith = new Dictionary<string, string>();原创 2020-08-14 19:03:03 · 6536 阅读 · 0 评论 -
C#中关于字符串的两种拼接比较:string和stringBuilder方式
C#中常用直接相加的方式进行字符串拼接,但是还有一种StringBuilder的拼接方式,现在对比他们之间的性能影响。C#代码如下using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Diagnostics;namespace NiuKe_TEST原创 2020-08-13 19:47:06 · 1067 阅读 · 0 评论 -
介绍C#程序编写规范:代码编写规则和命名规范(Pascal命名和Camel命名),让自己保存良好的代码风格
无规矩不成方圆,写了这么多篇博客发现没有对这方面进行总结,有必要进行一些归纳,同时也加深自己的印象一、代码编写规则尽量使用接口,然后使用类实现接口,以提高程序的灵活性,接口的介绍看这篇博客。关键的语句(关键的变量)要写注释,方便后面的人接手不要使用goto语句,除非是在跳出生产循环时避免编写超过5个参数的方法,如果要传递多个参数,则使用结构,结构的介绍看这篇博客。避免书写代码量过大的try…catch语句块避免同一个文件中编写多个类生成一个长的字符串时,使用StringBuilder类型而原创 2020-08-13 18:50:54 · 663 阅读 · 0 评论 -
break、continue和goto语句
break语句可以跳出switch多分支结构,还能跳出循环体如While,do,while或for循环。当多个SwitchWhile,do,while或for循环互相嵌套时,break语句值应用于最里层的语句。continue语句作用是结束本次循环,常应用于While,do,while或for循环,使其忽略位于他后面的代码而直接开始下一次循环。当多个While,do,while或for循环相互嵌...原创 2019-09-04 20:09:48 · 481 阅读 · 0 评论 -
C# 接口的介绍与应用介绍,接口与抽象类的区别
C# 中类不支持多重继承,而通过接口可以实现多重继承的功能。要点1.接口是抽象类的延续,可以将它看作纯粹的抽象类,接口中所有的方法都没有方法体。由方法、属性、事件和索引器组成,但不包含字段。2. 类要实现接口成员,类中的对应成员必须是公共的、非静态的,并且与接口成员具有相同的名称和签名。接口不能直接实例化。语法格式:修饰符 interface 接口名称:继承的接口列表{//可以使用n...原创 2019-11-21 17:10:04 · 331 阅读 · 0 评论 -
数据结构链表,栈和队列
一、链表链表是一系列的存储数据元素的单元通过指针串接起来形成的,因此每个单元至少有两个域,一个域用于数据元素的存储,另一个或两个域是指向其他单元的指针。这里具有一个数据域和多个指针域的存储单元通常称为节点(node)。链表的第一个节点和最后一个节点,分别称为链表的头节点和尾节点。尾节点的特征是其 next 引用为空(null)。链表中每个节点的 next 引用都相当于一个指针,指向另一个节点,借助这些 next 引用,我们可以从链表的头节点移动到尾节点。链表数据结构中主要包含单向链表、双向链表及循环原创 2020-08-11 14:01:10 · 344 阅读 · 0 评论 -
线程,任务,线程池的学习总结
富客户端应用程序的线程在WPF,UWP,Windows Forms应用程序中,在主线程上执行长时间的操作将导致应用程序失去响应。一个常用的方法时创建一个工作线程来执行耗时的操作,并在完成之时更新UI线程,这种方法就要采用封送技术,实现这个操作的底层模式有:1.WPF中,调用元素上的Dispatcher对象的BeginInvoke或者Invoke方法。2.在Windows Forms中:调用控...原创 2020-05-10 16:08:11 · 352 阅读 · 0 评论 -
介绍进程和多线程编程技术
线程概述线程的定义和分类首先系统中资源分配和资源调度的基本单位叫做进程,一个进程包含多个线程,每个线程也可以得到一小段程序的执行时间,这样一个进程就可以具有多个并发执行的线程。多线程的优缺点多线程的优点要提高对用户的响应速度,使用多线程是一种最有效的方式,在具有一个处理器的计算机上,多线程可以通过利用用户事件之间很小的时间段在后台处理数据来达到这种效果。(1)通过网络与WEB服务器和...原创 2019-03-06 10:15:21 · 1474 阅读 · 0 评论 -
C#中DataSet的使用
DataSet介绍DataSet类是ADO.NET中最核心的成员之一,它是支持ADO.NET断开式、分布式数据方案的核心对象,也是各种开发基于.Net平台程序语言开发数据库应用程序最常接触的类。DateSet对象是创建在内存中的集合对象,他可以包含任意数量的数据表以及所有表的约束、索引和关系,它相当于在内存中的一个小型关系型数据库,所以如果数据量太大会非常消耗内存。每一个DataSet包含一组DataTable对象和DataRelation对象,其中每个DataTable对象都由DataColumn、原创 2020-07-26 20:41:09 · 13655 阅读 · 0 评论 -
在C#中实现SQLite的事务处理
一、SQLite事务介绍事务是针对一个或多个数据库中数据的数据库操作的基本单位,操作时可以把许多个SQLite语句组合为一组,把所有这些放在一起作为事务的一部分进行执行。所有 SQL 命令组成一个单元。 要么全部保存,要么什么都不保存。 这是事务背后的基本思想。事务包括4个属性原子性确保工作单位内的所有操作都能完成,否则事务会在出现故障时终止,之前的操作也会回滚到以前的状态。一致性指的是确保数据库在成功提交事务上正确的改变状态。隔离性事务和事务之间互不干涉、相互之间没有影响。通过数据库级原创 2020-07-24 22:53:01 · 4118 阅读 · 1 评论 -
从SQLite数据库中遍历出所有的表和索引【用于项目中数据库的复原】
1.语法介绍每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表, 它定义数据库的模式。 SQLITE_MASTER 表看起来如下:CREATE TABLE sqlite_master ( type TEXT, name TEXT, tbl_name TEXT, rootpage INTEGER, sql TEXT);对于表来说,type 字段永远是 ‘table’,name 字段永远是表的名字。所以,要获得数据库中所有表的列表, 使用下列SELECT语句原创 2020-07-05 19:40:10 · 2004 阅读 · 0 评论 -
C#枚举(Enums)类型
枚举类型是一种特殊的值类型,可以在枚举类型中定义一组命名的数值常量。它常用于一些在编译时已知范围的常量。但这些常量的具体值要在执行时才能确定,默认基数从O开始,也可指定数值。比如,已知三原色是红蓝绿,它们同属于颜色。enum Color { Red=1, Blue=3, Green=4}enum Days{ Saturday = 1, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday } ;原创 2020-07-03 14:08:22 · 3049 阅读 · 0 评论 -
在C#中virtual(虚拟的)和abstract(抽象的)的区别
virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义。共同点他们有一个共同点:如果用来修饰方法,前面必须添加public,要不然就会出现编译错误:徐方法或抽象方法是不能狗私有的。加上virtual(虚拟的)和abstract(抽象的)的目的就是让子类重新定义,而private成员是不能被子类访问的。区别(1)virtual修饰的方法必须要有方法体(哪怕是仅仅添加一对大括号),而abstract修饰的方法不能有方法体。抽象方法声明时需要注意以下两点:抽象方法必须转载 2020-07-02 09:07:41 · 955 阅读 · 1 评论 -
在TreeView中选中指定的数据库建立新表,SQLite中同时创建完成,并通过XML记录在案,实现在程序第二次加载时能够记录你创建的新表
一、项目需求项目需求:在Treeview控件上右键鼠标,弹出菜单栏,选中创建数据库,界面上弹出一个对话框要求输入数据库名,然后再主界面TreeView中显示你刚刚创建的数据库,要求在程序第二次加载时保留你新建的数据库。1.contextMenStrip这是需用使用一个contextMenStrip1控件,你只需在Items中增加MenuItem就能增加选项,如下图所示:建立一个事件:右击新建数据库弹出对话宽。 private void NEWBuildDatabase_Click(object原创 2020-06-28 18:51:21 · 240 阅读 · 0 评论 -
C#在Winform框架下将SQLite数据库中查询出来的结果放到DataGridView指定列中
首先介绍DataGridView的一些设置,标题居中,第一列不显示,标题不排序 dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;//设置DataGridView列标题居中 dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;/原创 2020-06-19 16:32:03 · 2830 阅读 · 0 评论 -
C# SQLite数据库往某表中一次插入多条记录的方法
上篇博客C# SQLite数据库操作:创建数据库,创建表,删除表,插入数据,读出数据,加密数据库,增加列介绍了一些基本操作。SQLite 的 INSERT INTO 语句用于向数据库的某个表中添加新一数据行的SQL语句是:INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]VALUES (value1, value2, value3,...valueN);一次插入多行我使用的方法 queryString原创 2020-06-19 16:31:49 · 2069 阅读 · 0 评论 -
C# SQLite数据库操作:创建数据库,创建表,删除表,插入数据,读出数据,加密数据库,增加列
接上一篇博客C# Winform中使用SQLite基础入门:创建数据库,连接数据库,创建一张表(1)一、删除数据库但是由于它是个文件型的,我们直接用 System.IO.File.Delete(string path) 方法来删除文件。 private void button2_Click(object sender, EventArgs e) { if (System.IO.File.Exists(StartupPath))转载 2020-06-16 20:08:23 · 7434 阅读 · 5 评论 -
C# Winform中使用SQLite基础入门:创建数据库,连接数据库,创建一张表(1)
一、SQLite介绍SQLite,是一款遵守ACID的轻型关系型数据库管理系统,具有自给自足、无服务器、零配置、事务性的 SQL 数据库引擎特点。SQLite引擎不是一个独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中,SQLite 直接访问。不需要一个单独的服务器进程或操作的系统(无服务器的)。SQLite 不需要配置,这意味着不需要安装或管理。一个完整的 SQLite 数原创 2020-06-16 17:57:59 · 8301 阅读 · 11 评论 -
在Winform中使用Invoke,修改主线程,并介绍Invoke与BeginInvoke的区别。
在主线程中开了一个子线程,如果要在子线程中修改主线程某个控件,会触发异常:“线程间操作无效: 从不是创建控件“button1”的线程访问它。”。1.正确的写法是需要使用Invoke,Invoke方法需要创建一个委托。如下所示,我要修改一个Button控件的文字:Thread testThread1=new Thread(new ThreadStart(process1));//主函数中创建一个子线程testThread1.IsBackground = true;testThread1.Start()原创 2020-06-13 13:30:33 · 4316 阅读 · 0 评论