C# WinForm
草原悠悠兔
草原悠悠兔
展开
-
C#中List是引用类型的
C#中List的赋值是引用类型的原创 2022-09-22 14:47:44 · 1789 阅读 · 1 评论 -
VS开发中自动版本号的设置 -SubWCRev命令
SubWCRev这个命令是TortoiseSVN\bin下的命令; 所以前提是你的开发机需要确认安装了SVN的客户端,并且你本机的代码是SVN上down下来的,也就是代码需要是一个working copy;1.将程序集中的AssemblyInfo.cs拷贝一份为AssemblyInfo.template.cs(生成操作:无)2.项目的生成事件-生成前事件命令行添加:SubWCRev $(SolutionDir) $(ProjectDir)Properties\AssemblyInfo.tem原创 2022-04-09 16:51:45 · 843 阅读 · 0 评论 -
C#多线程之Parallel.for 类似于for的continue,break的方法
Parallel.For的执行有两个函数,利用ParallelLoopState对象来控制Parallel.For函数的执行,ParallelLoopState对象是由运行时在后台创建的。调用ParallelLoopState.Stop,表示Parallel.For的执行立刻停止,无论其他执行单元是否达到停止的条件。使用ParallelLoopState.Break,则表示满足条件的当前执行单元立刻停止本次循环,其他循环仍要执行。ParallelLoopState.break类似于for的co.原创 2021-04-07 18:33:41 · 1385 阅读 · 0 评论 -
TabControl 动态添加tab页
//tCLayerParaSet为tableControl string pageTitle = "工艺" + showlayerIDs[iLayer].ToString(); TabPage curTabPage = new TabPage(pageTitle); curTabPage.Name = pageTitle; tCLayerParaSet.TabPages.Add(curTabPage); //要添加的TAB页页面form,需在设计窗口设置formbodorStyle为None..原创 2021-01-11 15:33:40 · 1346 阅读 · 0 评论 -
List <自定义类>去重
public class LineEdgeCompare:IEqualityComparer<EdgeInfo> { public bool Equals(EdgeInfo x, EdgeInfo y) { return (x.myEdgeStartPt.Distance(y.myEdgeStartPt)<0.001&& x.myEdgeEndPt.Distance(y.myEdgeEndPt)<0...原创 2020-12-12 11:24:42 · 444 阅读 · 0 评论 -
C# dictionary 自定义类型的containkey 方法实现
官方手册:https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.generic.dictionary-2?view=netframework-4.7.2官方解决实例:using System;using System.Collections.Generic;class Example{ static void Main() { BoxEqualityComparer boxEqC = ne.原创 2020-12-02 09:54:41 · 958 阅读 · 0 评论 -
VS 打开时默认使用管理员权限
1. 打开VS的安装目录,找到devenv.exe,右键,选择“兼容性疑难解答”。2. 选择“疑难解答程序”3. 选择“该程序需要附加权限”4. 确认用户帐户控制后,点击测试程序,不然这个对话框不让你点下一步。很蛋疼,为什么不把下一步按钮禁用了呢?5. 点击“测试程序”后,VS会以管理员权限启动。这就对了。6.回到兼容性疑难解答对话框,点击下一步,然后选择“是,为此程序保存这些设置”,大功告成。现在,不论是直接启动VS,还是双击sln启动VS,都会...原创 2020-11-25 09:27:28 · 636 阅读 · 0 评论 -
C# WinForms中 怎么获取键盘 按键 和 后台模拟键盘输入
(1)首先设置窗体的KeyPreview为true(2)响应Key_Press事件,根据e.KeyCode判断。//方案一:protected override bool ProcessCmdKey(ref Message msg, Keys keyData){switch (keyData){case Keys.A : // A键//执行语句break;}} //方案二:private void Form2_KeyDown(object sender, KeyEvent原创 2020-07-29 11:55:54 · 4639 阅读 · 0 评论 -
用户控件集合列表(一套漂亮的用户自定义用户控件)
BLOG:https://www.cnblogs.com/bfyxGITHub:https://github.com/kwwwvagaa/NetWinformControlGitee: https://gitee.com/kwwwvagaa/net_winform_custom_control.git原创 2020-06-02 13:28:00 · 323 阅读 · 0 评论 -
窗口最大化时不遮挡任务栏
this.Size = Screen.PrimaryScreen.WorkingArea.Size;//最大化最小化窗口private void btnNormMax_Click(object sender, EventArgs e) { if (this.Size != Screen.PrimaryScreen.WorkingArea.Size) { this.Size = Screen.Primar...原创 2020-05-21 10:15:21 · 633 阅读 · 0 评论 -
C# 利用System.Xml.Linq对XML文件进行处理
Namespaceusing System; using System.Linq; using System.Xml.LinqBuilding Modelusing System;using System.Xml.Linq;namespace Melphi.XmlServices{ /// <summary> /// 用户 /// </summary> public class User { public转载 2020-05-15 11:56:42 · 1436 阅读 · 0 评论 -
X64下编译UserControl问题:未能加载工具箱项UserControl,将从工具箱中删除
UserControl不能编译成x64的?编译成功后,试图将dll加载入工具箱,提示 " 未能加载工具箱项UserControl,将从工具箱中删除 "?------解决方案--------------------1)把UserControl所在的dll编译成AnyCPU如果载入usercontroldll的程序是x86,dll就会运行为x86。反之,如果程序是x64,dll就会运行为x64。‘工具箱问题’是因为VisualStudio本身运行为x86,而x86的程序不能加载64位的dll。2)如果d..原创 2020-05-09 16:00:45 · 2745 阅读 · 0 评论 -
控件的二次开发(组件和自定义用户控件)
添加类库 添加组件引用添加框架 System.Windows.FormsusingSystem.Windows.Formsusing System;using System.Collections.Generic;using System.ComponentModel;using System.Diagnostics;using System.Lin...原创 2020-03-25 11:53:46 · 783 阅读 · 0 评论 -
C#新特性(NET 4.6)
.NET 4.6以后原创 2020-03-25 10:39:28 · 360 阅读 · 0 评论 -
简单扩展方法
原创 2020-03-25 10:03:22 · 127 阅读 · 0 评论 -
LINQ总结
原创 2020-03-25 08:54:38 · 98 阅读 · 0 评论 -
C#线程同步的几种方法
https://www.cnblogs.com/lgx5/p/9335518.html原创 2020-03-16 11:05:19 · 206 阅读 · 0 评论 -
C#总结——NPOI组件导入导出
导入导出方式1.基于COM方式(COM:非.NET 平台)调用office组件 ,依赖于客户端安装的word等版本方式2.NPOI的百度百科:https://baike.baidu.com/item/NPOI/10374941?fr=aladdin(推荐)NPOI:客户端可不安装office组件基本步骤:1.添加NPOI类库引用2.导出简单demo3.通用...原创 2020-03-06 15:52:24 · 783 阅读 · 0 评论 -
C#VS2019中ReportViewer控件和报表设计器 RDLC使用方法总结
vs2019然后用到报表这个功能的时候,没有这个控件。方法一:添加报表设计器,可以在扩展----管理扩展---联机,里面找到下面这个,然后点下载方法二:添加报表控件在VS中选择工具——Nuget包管理器——程序包管理器控制台执行命令:Install-Package Microsoft.ReportingServices.ReportViewerControl.WinFo...原创 2020-03-06 11:21:47 · 28057 阅读 · 5 评论 -
Windows调试学习笔记:(一)WinDBG中加载SOS和CLR
最近产品环境出现了部分服务器当机情况,虽然重启之后问题就不出现了。但本着彻底解决问题的态度,想要找到root cause。多次尝试Visual Studio失败(可能是代码惊醒了优化和签名)之后,决定使用WinDBG来调试。于是。。。灾难发生了。 想要一次性成功搭建测试环境,那得靠人品。看来我近来人品积累的不够,不断的有小问题出现。比如加载SOS和CLR,就让我不胜其烦。必须得记下...转载 2020-03-05 14:44:53 · 1622 阅读 · 1 评论 -
Task 跨线程访问控件和UI耗时任务卡顿解决方法
//普通方法 Task task = new Task(() => { this.lbTitle.Text = "**********"; }); //task.start; //报错 task.Start(TaskScheduler.FromCurre...原创 2020-03-04 17:01:57 · 797 阅读 · 0 评论 -
C# 基础知识总结--backgroundWorker、out与ref 、Queue
1.Debug.WriteLine(message); Trace.WriteLine()Trace 类 和 Debug 类的区别在于,Trace 类会同时在 Debug、Release 模式下起作用,而 Debug 只作用在 Debug 模式下。2.C#backgroundWorker用法1、在 WinForms 中,有时要执行耗时的操作,在该操作未完成之前操作用户界面,...原创 2020-02-29 23:17:20 · 528 阅读 · 0 评论 -
C#调用C++制作的含opencv图像处理库的DLL
namespace FaceDetectTestPro_CSharp_{ public partial class Form1 : Form { [DllImport("DllFaceDetect.dll", EntryPoint = "faceDetectMP", CallingConvention = CallingConvention.Cdecl)]...原创 2020-02-27 15:48:48 · 577 阅读 · 0 评论 -
状态栏lable居中或两边对齐问题(ToolStripStatusLabel 的spring属性)
MSDN :spring属性获取或设置一个值,该值指示在调整窗体大小时,ToolStripStatusLabel是否自动填充StatusStrip上的可用空间可使得ToolStrip上的label控件在其余部分居中显示...原创 2020-02-21 16:55:58 · 1143 阅读 · 0 评论 -
CS程序发布版本后提示自动升级功能
https://www.cnblogs.com/sunliyuan/p/12269435.html原创 2020-02-19 16:48:07 · 117 阅读 · 0 评论 -
编译器错误消息: CS0246: 未能找到类型或命名空间名称“UpdatePro”(是否缺少 using 指令或程序集引用?)
同一解决方案中的两个项目:可将引用项目和主项目的框架要保持一致原创 2020-02-19 15:04:40 · 1222 阅读 · 0 评论 -
文本框二次控件的开发
目标:实现只可输入数字的文本框,并可以设置输入数字的最大值、最小值及限定小数位数的文本框二次控件的开发操作步骤:1.新建项目,也可以是类库2.添加用户控件3.编写用户控件的属性和事件using System;using System.Collections.Generic;using System.ComponentModel;using System.Draw...原创 2020-01-21 13:58:14 · 164 阅读 · 0 评论 -
C# 锁的使用
转载 2020-01-17 10:56:29 · 564 阅读 · 0 评论 -
TASK学习笔记
C#Task学习:https://www.cnblogs.com/yaosj/p/10342883.html补充:1.父任务和子任务也可能不在同一线程上Task task1 = new Task(()=> { MessageBox.Show($"父任务线程ID:{Thread.CurrentThread.ManagedT...转载 2020-01-17 10:31:39 · 223 阅读 · 0 评论 -
C# 基础知识小结
一、MSDN【1】作用:通过MSDN可以快速的查看系统定义的各种类、方法的解释。【2】方法:点击一下要查看的类名称或者方法名称,光标闪烁,然后按F1,即可联网打开在线解释。二、变量变量标识数据存储空间,内存地址(一串十六进制数)的别名三、常量常量名字全部大写,定义的时候进行初始化。初始化完成后不允许随意修改。const double PAI=3.14;四、枚举...原创 2020-01-09 11:11:28 · 78 阅读 · 0 评论 -
C# 3种timer的用法总结
https://blog.csdn.net/gangzhucoll/article/details/93744022###2.timer传参2.1非匿名方法 //如果需要定时器传参,可采用匿名方法 private static System.Timers.Timer aTimer; public static void Main()...原创 2020-01-06 13:49:02 · 1655 阅读 · 0 评论 -
窗口关闭管理方法
1.关闭非顶级窗口//关闭嵌入的窗体 private void ClosePreForm( Panel panel) { foreach (Control item in panel.Controls) { if (item is Form) {...原创 2020-01-06 09:24:50 · 257 阅读 · 0 评论 -
C# list<T>中Sort排序用法
方法一:使用Comparison<T>委托sort():说明:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具...原创 2020-01-02 14:43:06 · 2922 阅读 · 0 评论 -
DataGridView控件
1.绑定数据源的常见方式// DataSet 、DataTable// 方式1DataSet ds=new DataSet ();this.dataGridView1.DataSource=ds.Table[0];this.dataGridView1.DataSource = ds.Tables["表名"];// 方式2DataTable dt=new DataTable(...转载 2019-12-27 17:15:59 · 237 阅读 · 0 评论 -
c# 中string 用法: $、@ 、??用法及小数位数
c# $用法 https://blog.csdn.net/kebi007/article/details/52612610 //通过字符串拼接输出 Console.WriteLine("课程编号:" + courseId + " 课程名称:" + courseName); //使用占位符格式化输出 ...原创 2019-12-27 11:21:22 · 1512 阅读 · 0 评论 -
新建指定格式的文件,文件管理
/// <summary> /// 生成新的线圈文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Btn...原创 2019-12-19 13:36:03 · 147 阅读 · 0 评论 -
文本框的数字验证功能
/// <summary> /// 文本框输入数字验证(3位小数) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private voi...原创 2019-12-19 13:32:14 · 273 阅读 · 0 评论 -
字符串分割
第一种方法://每条命令以AAAA开头string[] arrMid = CurrentPowerNum.Split(new char[4] { 'A', 'A', 'A', 'A' });第二种方法:using System.Text.RegularExpressions;string[] arrMid = Regex.Split(CurrentPowerNum,"AAAA"...原创 2019-12-19 13:21:20 · 136 阅读 · 0 评论 -
C#采用委托和事件进行窗体间通信
委托小技巧:1)哪个窗体(B窗体)要调用委托变量,哪个窗体自己创建委托变量对象。即谁激发(invoke),谁创建。 2)委托的事情是哪个窗体(A窗体)执行,委托关联的方法就定义在哪个窗体。 3)委托变量和方法的管理,需要从【创建调用窗体B】(窗体A或其他窗体)的地方进行关联事件:事件是委托...原创 2019-12-17 16:55:25 · 369 阅读 · 0 评论 -
使用 C#进行 CAN 总线编程 —— 基于 WINCE 平台 C#编程要点之三
使用 C#进行 CAN 总线编程 —— 基于 WINCE 平台 C#编程要点之三 英创 ARM9 系列嵌入式主板,如 EM9000 、 EM9260 均带有(或可选) CAN 总线接口, 英创公司不仅提供了硬件平台支持,还提供了 CAN 总线通讯驱动程序。本文主要介绍在基 于 Windows CE 平台的英创嵌入式主板下进行 C# ( M...转载 2019-12-16 16:04:05 · 7354 阅读 · 1 评论