C#
文章平均质量分 60
秋漓
这个作者很懒,什么都没留下…
展开
-
c# 32位程序突破2G内存限制
VS中32位程序突破2G内存限制原创 2023-03-08 11:39:32 · 4710 阅读 · 0 评论 -
WPF在某些控件中屏蔽快捷键
在程序应用中,往往会使用某些快捷键来提升用户的使用体验。比如设置快捷键Y进行界面跳转。那么实际应用中问题是,某个界面有文本框TextBox,已设置快捷键的前提下,在文本框键入Y,会优先触发快捷键事件,且文本框不会添加Y值。 那么需求就变成了,在该界面有快捷键Y,且做文本框输入操作时不启用快捷键。利用CanExecute事件就可以了。当焦点在TextBox时,取消快捷键执行。代码如下:private void CommandBinding_CanExecute(obje...原创 2021-12-18 11:42:43 · 1081 阅读 · 0 评论 -
C#调用python.exe使用arcpy
文章目录背景遇到问题分析问题解决问题背景环境:ArcGis10.2.2。C#开发程序一直以来以调用Desktop的python环境(32位)来做数据处理分析。但是数据量大时,出现了内存资源不够的情况。因此决定换成使用64位python环境。遇到问题C#通过Process.Start()去调用64位python.exe,在Debug模式下毫无问题,但是直接运行exe就报错Process finished with exit code -1073741819 (0xC0000005)。指向异常。分析原创 2020-06-05 23:15:58 · 612 阅读 · 0 评论 -
C#获取注册表指定键值
某些程序必须依赖指定运行环境。那么读取注册表来判断此电脑是否有执行环境是个很不错的办法。因为每个软件安装之后都会在注册表中注册对应的键值,并且有些键值是独一无二的。那么首先就需要找到那个具体的独一无二的键值,以便程序在运行之前能够去读取以判断。代码如下:class Program { private static string _sValue = string.Empty; static void Main(string[] args) ...原创 2020-06-01 11:54:58 · 2007 阅读 · 0 评论 -
C#线程——Task(任务)
@ [toc]一、认识Task二、撒谎大家原创 2020-01-06 17:06:25 · 10160 阅读 · 1 评论 -
C#创建及读取DAT文件
*.DAT 从后缀名上也能理解其中的含义即:data文件,数据文件;这个文件有的可以用记事本工具打开,但是加密后就不一定了。 很多程序都创建dat文件来保存设定。创建一个只有自己才能解析得dat文件,并且可以读取和写入,写一个类,它可以创建一个只有使用这个类才能解析得dat文件。同时读取或写入数据进dat文件时,也只可以使用这个类来读取写入。简单来说就是这个类是打开读取写入这个d...原创 2019-10-22 11:56:54 · 4826 阅读 · 1 评论 -
C#操作XML文件
XML被设计用来传输和存储数据。 首先在程序运行目录下创建了一个XML文件“Datas.xml”。内容如下:<?xml version="1.0" encoding="utf-8"?><peoples> <!--人员信息--> <people> <name>张三</name> ...转载 2019-05-27 10:35:09 · 915 阅读 · 0 评论 -
C#Dictionary复制克隆副本及比较是否相等
一、复制克隆 用等号直接Dictionary1 = Dictionary2,复制过去的是地址(赋址),这时改变Dictionary2,Dictionary1也会被改变。普遍的是我们常常在改变复制后的值时不希望改变原有的值。这时就需要赋值而不是赋址。可用下列方法进行赋值:private void Test(){ Dictionary<string, string&...原创 2019-04-17 21:52:03 · 6438 阅读 · 0 评论 -
C#List克隆复制副本及比较是否相等
一、复制克隆 在编程中时常遇到想要去操作某个List集合而又不想破坏原有List的情况。如果仅仅是新建一个新List,将旧List的值赋值给新List的话,改变复制后的List,那么原有的List也会变化,并没有起到备份原始数据的作用,对于没有嵌套的List,可以采用遍历重新赋值的方法去赋值(传递的是值类型,并非引用类型),若List内的数据是一个类的话,赋值的时候需要...转载 2019-04-14 20:19:29 · 2064 阅读 · 0 评论 -
C#委托的使用总结
使用场景: 委托一般都使用在 Observer模式(观察者模式) Observer设计模式是为了定义对象间的一种一对多的依赖关系,以便于当一个对象的状态改变时,其他依赖于它的对象会被自动告知并更新。 Observer模式主要包括如下两类对象: 被监视对象:往往包含着其他对象所感兴趣的内容。 监视者:当对象中的某件事发生的时候,会告知建设者,而...转载 2019-07-11 16:16:54 · 400 阅读 · 0 评论 -
FeatureClass获取多字段唯一记录
测试数据:20万记录的图层,30个字段1、常规方式 gdb:耗时2846ms mdb:3293ms shp:5769ms/// <summary>/// 得到要素类某字段的唯一值/// </summary>/// <param name="FClass">要素类</param>/// <param n...原创 2019-03-23 21:50:00 · 698 阅读 · 0 评论 -
C#中Double类型比较
记个小笔记:在数学计算中10 次 0.1 相加应该等于1,但是在计算机中计算并不为1,而是0.99999999999999989。那么一般的比较方法如“==”、Equals就不适用了。还好双精度计算有个误差值为1E-6;下面附上代码:public static void Test(){ double value1 = 0; double value2 = ...转载 2019-05-31 20:57:50 · 12571 阅读 · 2 评论 -
C#用使用MD5码
原理: MD5文件打开关闭没事,改变内容MD5码就会改变,是对内容进行加密后的结果。 MD5 (tanajiya.tar.gz) = 38b8c2c1093dd0fec383a9d9ac940515,这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。 大家都知...转载 2019-07-09 17:10:56 · 5041 阅读 · 0 评论 -
WPF中TreeView设置右键菜单
右键菜单功能存在于各个地方,其功能也是非常的多,方便用户操作。例如Windows桌面的菜单: 但是有时候过多的右键菜单功能又容易导致用户的误操作,下面讲解给TreeView设置右键菜单,首先在xaml文件中设置一棵树: 1、最直观的方式是直接在页面上创建ContextMenu,并在页面初始化时绑定点击事件: ...原创 2019-07-10 16:34:16 · 7224 阅读 · 0 评论 -
C# List集合中获取重复值及集合运算
话不多说,直接上实例:一、获取集合内重复值public void GetDuplicateValue(){ List<string> lisA = new List<string> { "A", "B", "C", "A" }; //方式一 借助字典 Dictionary<string, int> dic = new Dict...转载 2019-07-15 17:25:07 · 15473 阅读 · 0 评论 -
C# 枚举
枚举为我们日常开发的可读性提供的非常好的支持,在使用枚举类型时,我们经常需要取名称和值,甚至有时候还需要取枚举类型的描述。通过反射,我们能获取到枚举类型的描述属性。当然举类型还可以赋上其他类型的属性。 public enum EnumCustom { [CategoryAttribute("性别")] //枚举类型可以赋上其他类型的属性 ...转载 2019-09-02 18:14:08 · 341 阅读 · 0 评论 -
MvvM中ComboBox绑定枚举值
定义枚举值:public enum Subjects{ 语文, 数学, 英语, 体育}方式一:xaml文件:需要引入xmlns:core="clr-namespace:System;assembly=mscorlib";其中枚举我是写在ViewModel中的,所以还需要引入xmlns:viewModel="clr-namespace:WriteTX...原创 2019-09-09 20:03:02 · 1496 阅读 · 0 评论 -
MvvM中转换器IValueConverter的使用
转换器:提供将自定义逻辑应用于绑定的方法 。 页面显示的值也许不是直观的值,只是如1,2,3...这些数字代码, 转换器可将数据从一种类型更改为另一种类型,例如将数字代码转为具体案例值。转换器代码:public class CusTomConvert : IValueConverter{ public object Convert(object value, Typ...转载 2019-09-09 20:37:02 · 761 阅读 · 0 评论 -
C#HasSet<T>
.NET3.5多了个HasSet<T>用来存储集合。从名称可以看出,它是基于Hash的。HashSet<T>类提供高性能的设置操作。类似于访问Dictionary<TKey, TValue> 或Hashtable集合的键。 简而言之 HashSet<T> 可以将类视为Dictionary<TKey, TValue>没有值的...转载 2019-09-19 14:51:27 · 975 阅读 · 0 评论 -
读写TXT文件
一、使用File 1、File.WriteAllText:写入内容,可以指定编码/// <summary>/// 写入文本使用 File.WriteAllText/// </summary>/// <param name="filePath">文件路径 例如:D:\文本.txt</param>/// <param name=...原创 2018-03-15 10:36:46 · 920 阅读 · 0 评论 -
GIS坐标系
最近GIS开发中遇到两个图层坐标系的对比是否相同。在GIS开发中总会接触到坐标系,如:地理坐标系、投影坐标系等,既然用到了,那就在这里记下一笔。那么当然先要了解一下坐标系的基本概念了。基本概念1、坐标系用来表达和确定空间位置。没有坐标系,坐标值就无从谈起,也就无法描述空间位置。 2、在GIS中,我们遇到的坐标系一般有两种:地理坐标系(GCS) 和投影坐标系(PCS)。...原创 2019-03-03 16:56:46 · 4947 阅读 · 0 评论 -
提取文件或目录信息
//将字符串数组组合成一个路径。结果等同于string fullPath = "E:\\Other-shore\\WpfFile\\Temp\\新建 Microsoft Word 文档.docx.dsdf";//Combine并不会检测出所有非法字符,大部分能检测出来string[] paths = { @"E:\Other-shore", "WpfFile", "Temp", "新建Mic...转载 2019-01-16 18:36:37 · 374 阅读 · 3 评论 -
C#文件夹操作
整理了文件夹的创建、清空和删除。以在目录E:\Other-shore下的项目WpfFile做测试。首先定义了一个路径:可以使用绝对路径如:E:\Temp;这里使用的是相对路径,使用相对路径能提高程序的可移植性。string root = "../../../Temp";在C#中,相对路径使用“.”(代表当前目录)和“..”(代表上一级目录)表示:【"./Temp"】等同于【"Tem...原创 2019-01-16 17:43:11 · 715 阅读 · 0 评论 -
Get与Post请求
Get请求: /// <summary> /// get请求 /// </summary> /// <param name="uri">地址</param> /// <param name="paramStr">参数</param&原创 2018-03-06 09:18:34 · 231 阅读 · 0 评论 -
C# 解析JSON方法
在进行Linq to JSON之前,首先要了解一下用于操作Linq to JSON的类.类名说明JObject用于操作JSON对象JArray用于操作JSON数组JValue表示数组中的值JProperty表示对象中的属性,以“key/value”形式JToken用于存放Linq to JSON查询后的结果方法一:object Data = null;Dictionary<string, ...转载 2018-03-05 17:22:34 · 538 阅读 · 0 评论 -
C# DataTable
添加引用using System.Data;创建表 //创建一个空表DataTable dt = new DataTable();//创建一个名为"Table1"的空表 DataTable dt = new DataTable("Table1");创建列 //1.创建空列DataColumn dc = new DataColumn();dt.Columns.Add(dc);//2.创建...转载 2018-03-12 11:52:36 · 503 阅读 · 0 评论 -
随便写写
使用类保存数据一、新建一个类:public class Test { private string strF; private string strV; public Test(string mF, string mV) { strF = mF; strV = mV; ...原创 2018-03-01 15:57:37 · 115 阅读 · 0 评论 -
正则表达式
只允许输入大小写英文字母及数字: private void barButtonItem7_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { System.Text.RegularExpressions.Regex pRegex = new System.Text.R...原创 2018-03-01 15:29:34 · 107 阅读 · 0 评论 -
C# CSV转成JSON
需要引用命名空间:using Newtonsoft.Json.Linq;先来介绍几个类:类名说明JObject用于操作JSON对象JArray用于操作JSON数组JProperty表示对象中的属性,以“Key/Value”形式 JObject:基本的json对象:public JObject GetJObject() { //JObject obj = new JObject(new JP...转载 2018-03-07 10:20:57 · 3427 阅读 · 0 评论 -
C#导出Excel表格
数据流方式 这种方法的优点就是导出比较快,但是excel的表格里面设置标题,字体样式等都不能弄,因为是用数据流直接导出为excel的,除非能在数据流中设置这些样式。24000*23的数据只需耗时23毫秒 /// <summary> /// 以数据流的方式导出 /// </summary> /// ...转载 2018-02-12 17:12:22 · 2602 阅读 · 1 评论 -
C#读写Excel(NPOI)
NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。 优点:读取Excel速度较快,读取方式操作灵活性 缺点:需要下载相应的插件并添加到系统引用当中。 需要下载引用NPOI...原创 2018-02-12 16:13:04 · 2478 阅读 · 1 评论 -
C#读写Excel(Com组件的方式)
这种方式需要先引用 Microsoft.Office.Interop.Excel 。可以非常灵活的读取Excel中的数据,而且使用方式很丰富,基本上凡是打开Office Excel软件能够用鼠标点击完成的事,使用VSTO调用COM组件都能完成,而且可以调用Excel自身带的宏方法等。 但是,如果是Web站点部署在IIS上时,还需要服务器机子已安装了Excel,有时候还需要为配置I...转载 2018-02-12 08:56:40 · 17497 阅读 · 1 评论 -
C#读写EXCEL(OLEDB方式)
用OLEDB方式读取EXCEL的速度是非常快的。但是当Excel数据量很大时。会非常占用内存,当内存不够时会抛出内存溢出的异常。 OLEDB方式将Excel作为一个数据源,直接用Sql语句操作数据,并且不需要安装Office Excel就可以使用。但缺点是不能灵活操作Excel,例如设置字体,单元格格式等。一、读取Excel连接字符串的设置:读取“.xls”时使用"Provider...原创 2018-02-11 09:34:48 · 26583 阅读 · 4 评论 -
认识StringBuilder
StringBuilder 类表示可变字符的字符串。名称说明Capacity属性获取或设置可包含在当前实例所分配的内存中的最大字符数Length属性获取或设置当前 StringBuilder 对象的长度Capacity属性: 一般在我们直接New的情况下StringBuildersb=new StringBuilder(),它的预设Capacity是16,每次Append个长度为1的字...转载 2018-03-23 13:43:30 · 273 阅读 · 0 评论 -
C#中委托与事件
C#为了类型安全,默认并不支持指针。而是采用委托的方式。委托的声明: 属性 修饰符 delegate 返回类型 委托类型名(参数列表)。其中返回类型和参数列表共同决定了委托类型能关联的一组方法 public delegate int TDelegate(int a,int b); //声明委托 在类ClassDelegate中创建一个静态方法Addpublic class C...原创 2018-03-20 11:25:14 · 151 阅读 · 0 评论 -
获取当前程序运行路径
一样的代码长时间不用也会忘记,虽然网上有很多,但我懒得收索,还是做个笔记记下来省事。一、 获取当前程序的运行路径新建了一个项目WpfFile存放于存放于E:\Other-shore目录下;总结网上资源,获取当前程序的运行路径共有以下几种方式://获取或设置包含该应用程序的目录的名称。string C = AppDomain.CurrentDomain.SetupInform...转载 2019-01-16 14:24:13 · 1252 阅读 · 0 评论 -
C#中?、??与?:的使用
之前最常用的也就是(?:),最近遇到(?)和(??)感觉还是挺有意思的。1、可空类型修饰符(?)int? a = null;2、空合并运算符(??) 用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数。 例如:a ?? b 当a为null时则返回b,a不为null时则返回a本身。...原创 2018-11-23 19:11:58 · 12458 阅读 · 0 评论 -
SQLite部署时出错:无法加载DLL“SQLite.Interop.dll”
近期使用SQLite数据库开发,主要引用的是System.Data.SQLite.dll这个dll,在部署到测试环境时报无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块。解决方法:把这两个引用加上并且属性设置好了,在我本地可以安装使用了。...转载 2018-11-16 20:21:39 · 3434 阅读 · 0 评论 -
数字字符串位数不足左边补零
方法一int i = 5;Console.WriteLine(i.ToString("D4"));方法二Console.WriteLine(i.ToString("0000"));方法三:推荐使用Console.WriteLine(i.ToString().PadLeft(4,'0'));在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地...转载 2018-08-30 16:20:51 · 6349 阅读 · 0 评论 -
C#中backgroundworker的使用
介绍:根据MSDN介绍: BackgroundWorker 类允许您在单独的专用线程上运行操作。 耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。 如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。 若要在后台执行耗时的操作,请创建...转载 2018-04-20 15:52:40 · 9825 阅读 · 0 评论