![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
旋风
这个作者很懒,什么都没留下…
展开
-
注册注销COM组件
使用管理员权限,启动WINDOWS的命令提示符窗口。执行以下命令实现注册注销COM组件。注册COM组件regsvr32 /u X:\\XXCOM.dll注销COM组件regsvr32 /u X:\\XXCOM.dllX:\\XXCOM.dll是需要注册或注销的COM组件的绝对路径。...原创 2020-12-25 16:34:22 · 875 阅读 · 0 评论 -
Excel读写的性能对比(pandas、openpyxl、ExcelDataReader、CloseXml、NPOI及Interop.Excel)
因为需要用过Excel 文件的数据读写,所以特别调查了一下主流的几种读写excel的方法及性能。测试环境:win10 + 8G内存测试数据:excel文件(100万行*100列)操作:读取Excel文件A的数据,并另存到Excel文件B测试结果:测试工具 读取时间(s) 保存时间(s) python/pandas 56.8 138.1 python/openpyxl 84.5 109.3 C#/ExcelDataReader 29.原创 2020-09-25 09:43:21 · 2376 阅读 · 2 评论 -
C#里使用JsonConvert,处理json字符串与结构体之类的转换
网络通信或不同进程之间的数据传输,常会使用JSON字符串进行传输。在C#环境,可以使用Newtonsoft.Json的JsonConvert类 完成对字符串和结构体之间的转换。一、从NuGet管理里,加载Newtonsoft.Json包二、引用Newtonsoft.Jsonusing Newtonsoft.Json;三、使用SerializeObject函数,可以将结构体转化为字符串 string strJson = JsonConvert.Ser...原创 2020-09-18 16:40:06 · 4975 阅读 · 0 评论 -
WPF或C#自动生成系统代码_自动生成事件函数
同样,VS也可以使用快捷键的方法,自动生成事件函数。这样也可以提高编程的效率。以KeyDown事件为例,输入”this.KeyDown +=“后按TAB键,即可以生成事件函数 public Form1() { InitializeComponent(); this.KeyDown += Form1_KeyDown; ; } private void Form1_KeyDown(objec原创 2020-09-17 16:26:13 · 805 阅读 · 0 评论 -
WPF或C#自动生成系统代码_自动生成属性的方法
WPF或C#的编程过程中,经常需要用到属性或依赖。这时,如果全手动书写这些重复的代码太过于费时,还容易出错。而VS本身是有提供自动生成这类代码的快捷方式的。如:自动生成属性输入propa,按两次TAB键,即自动生成属性代码 public int MyProperty { get; set; }输入propdp,按两次TAB键,即自动生成依赖属性代码 public int MyProperty { get...原创 2020-09-17 16:18:02 · 1090 阅读 · 0 评论 -
使用ExcelDataReader读取excel文件的内容
从官网上可以知道,ExcelDataReader是一个用C#写的轻量级的读取excel的库。所以应该只能读取excel文件,不能对excel文件内容进行修改编辑。但因为ExcelDataReader的读取速度比其它方法更快,所以在处理有超大量数据的excel文件时会常常用到。以 下是使用ExcelDataReader读取excel文件的例子: void ReadExcel(string FilePath) { FileStrea...原创 2020-09-16 16:00:24 · 3515 阅读 · 1 评论 -
WPF禁用指定键盘消息(如:alt+F4)的方法
如果要处理alt或ctrl等组合键,需要在窗外使用变量进行记录。以下代码以alt键为例,禁用alt+F4。alt键按下时,记录状态。并调用【e.Handled = true;】,意为消息已经处理,系统后续不再处理,从而达到禁用指定键盘消息的效果。 private bool AltKeyDown = false; private void Win_PreviewKeyDown(object sender, KeyEventArgs e) {原创 2020-09-11 16:37:06 · 1468 阅读 · 0 评论 -
WPF程序处理多屏显示的显示处理
多屏显示主要有以下情行:通常abcd比较常见,对应的坐标如图。WPF里,可以使用System.Windows.Forms.Screen类对多屏问题进行处理。如:1.指定一个控件,取得这个控件大部分区域让所在屏幕的详细信息 public static Screen FromControl(Control control);2.指定一个对象,取得这个指针的对象大部分区域在屏幕的详细信息 public static Screen FromHandle(IntP...原创 2020-08-21 15:45:27 · 1752 阅读 · 0 评论 -
多言语环境下,PointCollection类的Parse函数异常崩溃问题
问题:PointCollection类的Parse函数使用以下方法调用, 会在部分语言(如:法语、西班牙)下崩溃,而在其它一些言语环境(如:英语、中文)下却能正常运行的情况。 Point APoint; Point BPoint; ... string strPoints = $"{APoint} {BPoint}"; var Points = PointCollection.Parse(strPoi原创 2020-09-07 10:50:33 · 166 阅读 · 0 评论 -
C#工程的多屏处理类分析
C#的多屏处理,通常使用System.Windows.Forms的Screen类,其中 包含了FromControl、FromHandle、FromPoint和FromRectangle 函数。而这几个函数的内部实现如下:.public static Screen FromPoint(Point point){ if (Screen.multiMonitorSupport) { NativeMethods.POINTSTRUCT pt = new NativeMethods.POINTSTR原创 2020-08-24 13:40:03 · 425 阅读 · 0 评论 -
WPF程序的自定义控件内,Tab键不能切换焦点的问题
问题状况:自定义的控件内,包含两个按钮。程序加载后,userControl高亮,主窗口被禁用,默认焦点设置在A或B按钮上。如图。一旦切换到其它窗口(即当前窗口无效化),再切回窗口时。TAB键失效。解决方法:在userControl内处理1.当主窗口变为背景窗口时,即处理Deactivated事件,需要记录当前焦点。 focusElement = FocusManager.GetFocusedElement(Now_Grid);//Now_Grid是u...原创 2020-08-21 15:02:08 · 711 阅读 · 0 评论 -
用C#创建Websocket的客户端
Socket是传输控制层协议,比较灵活,使用的场合比较多。WebSocket是应用层协议,比较易用,网页端使用非常方便。因为有很多phthon程序喜欢用WebSocket 作为服务端进行网络通信。这时,如果需要C#程序做为客户端,则可以使用以下方法。先载NuGet包WebSocketSharp。 string webPath = "ws://127.0.0.1:8001"; WebSocket webSocket = new WebSocket(we...原创 2020-08-07 16:24:54 · 6842 阅读 · 1 评论 -
WPF的MetroWindow风格窗口的SaveWindowPosition属性(自动保存前回窗口位置)的原理调查
<MetroControls:MetroWindow x:Class="MainWindowView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"... SaveWindowPosition="True"...>这里的SaveWindowPosition属性设置为True之后,就可以实现窗口前回最后停留的位置信息的保存和读取。经过调查发现,MahApps.Metr...原创 2020-08-07 09:10:48 · 800 阅读 · 0 评论 -
ZipArchive压缩类的 Update模式压缩数据时,内存使用过高的问题。
C#的ZipArchive压缩类,是常用的数据压缩类。本身包含有三种压缩模式:Read,Create,Update。处理新创建的数据压缩,使用Create的模式,压缩的效率很好,占用的内存也不大(压缩2G的文件,也只耗费15M左右内存)。 如果遇到压缩中断后,续压缩的情况时,如果使用Update模式,效率很好,没什么问题。但消耗的内存会和被压缩的数据成正相关。如果续压缩的数据是1G,那内存使用峰值会在2G左右。很容易会出现内存使用问题,从而导致程序异常结束。 原因:Cre...原创 2020-05-21 16:44:11 · 737 阅读 · 0 评论