C#
Angus_LJH
精益求精,方可有所悟!
展开
-
Razor扩展
一、扩展IHtmlHelper 由于在Razor页面使用@Html.能够使用的自带方法有限,因此可以写一些扩展方法,例如扩展一个方法返回Html标签。扩展方法是静态方法,且第一个参数是自身,用this修饰。定义静态扩展方法,扩展IHtmlHelper类型,返回IHtmlContent类型 public static class HtmlHelperExtensions { public static IHtmlCo...原创 2021-08-18 22:49:34 · 261 阅读 · 0 评论 -
C#EnumHelper
简单枚举帮助类:方便开发中获取枚举键值转换 /// <summary> /// 枚举帮助类 /// </summary> public class EnumHelper { /// <summary> /// 根据传入的int返回对应枚举属性名称 /// </summary> /// <typeparam name="T">枚举对象</原创 2021-08-02 17:18:09 · 455 阅读 · 0 评论 -
C#枚举帮助类
public class EnumHelper { /// <summary> /// 根据传入的int返回对应枚举属性名称 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="num">进制</param> /// <retur...原创 2021-07-01 15:04:24 · 358 阅读 · 0 评论 -
WPF关闭弹出窗体、popup
业务场景:在处理全局钩子捕获到Windows特定消息需要关闭指定的弹出窗体。一个自定义窗体:或者一些窗体上的Popup控件不管是不是这个业务场景,都可以在不相干的后台中去获取控件并关闭。 /// <summary> /// Windows钩子 /// </summary> private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, Int原创 2021-04-14 15:50:27 · 1469 阅读 · 0 评论 -
c#深度复制
深度复制帮助类封装using System.Collections.Generic;using System.IO;using System.Runtime.Serialization.Formatters.Binary;using System.Xml.Serialization; /// <summary> /// 深度复制,序列化拷贝。 /// </summary> public class DeepCopyExtensi..原创 2021-04-14 10:26:44 · 829 阅读 · 0 评论 -
Win32使用钩子捕获Windows进程消息
添加引用:using System.Runtime.InteropServices; public class Win32API { [DefaultDllImportSearchPaths(DllImportSearchPath.SafeDirectories)] [DllImport("user32.dll")] public static extern bool ChangeWindowMessageFilterEx(IntPtr .原创 2021-04-12 15:18:31 · 899 阅读 · 0 评论 -
c# 实现3/5/7游戏
规则:15个任意物品(可以是火柴牙签poker)以下按牙签为例将15根牙签分成三行每行自上而下(其实方向不限)分别是3、5、7根安排两个玩家,每人可以在一轮内,在任意行拿任意根牙签,但不能跨行拿最后一根牙签的人即为输家namespace ThreeFiveSevenGameV2{ /// <summary> /// 随机选择行,随机取火柴根数(两人同时操作同一行) /// </summary> public p.原创 2021-03-17 21:18:00 · 1418 阅读 · 0 评论 -
C#16进制字符串到数组之间的相互转换
/// <summary> /// 十六进制转字节数组 /// </summary> /// <param name="s"></param> /// <returns></returns> public static byte[] HexStringToByteArray(string s) { s ...原创 2021-03-04 11:24:06 · 886 阅读 · 1 评论 -
获取中文汉字英文首字母
在开发中有时候需要使用某些列进行排序,而中文汉字只是按照第一个汉字进行排序,这个时候就需要每个汉字的首字母组成的字符串进行排序。源码: /// <summary> /// 中文字符串帮助类 /// </summary> public class ChineseStringHelper { /// <summary> /// 获取中文字符串汉字首字母拼音 /// </sum原创 2020-05-12 19:19:05 · 714 阅读 · 0 评论 -
WPF 单例(instance)子窗体关闭与再次显示,窗体刷新不及时问题
1、单例窗体不能够close,close后下次就再也不能打开了。只能通过重写OnClosing方法进行隐藏处理 protected override void OnClosing(CancelEventArgs e) { this.Hide(); e.Cancel = true; }2、窗体隐藏后,再次sho...原创 2020-04-30 00:52:30 · 2523 阅读 · 1 评论 -
定制PivotGridControl特性类
前言在EF架构中使用PivotGridControl控件要绑定数据源时,每一次都要去后台查询出需要的数据集,然后甄选出我们需要的用以pivotgridcontrol所绑定的数据源的字段,接着定义一个个的PivotGridField,最终添加到一个List<PivotGridField>集合中作为数据源进行绑定。其次,对于PivotGridControl也要去创建设置一些显示列也...原创 2019-02-20 16:01:46 · 640 阅读 · 1 评论 -
XtraTabControl对Page页操作的一些公共方法
/// <summary> /// 关闭tabcontrol的所有页 /// </summary> /// <param name="tabControl"></param> public static void CloseAllTabPage(this XtraTa...原创 2019-02-22 10:24:51 · 1723 阅读 · 0 评论 -
TreeList节点展开与收缩
介于树节点的展开与收缩是经常多处使用的,这里就写个两个调用方法。 /// <summary> /// 展开指定节点以及其父节点 /// </summary> /// <param name="tree">树</param> /// <param name="a...原创 2019-02-22 10:18:36 · 5396 阅读 · 0 评论 -
GridControl右键弹出PopupMenu菜单
方法一:private void gridControl_MouseUp(object sender, MouseEventArgs e) { try { GridHitInfo info = gvEmployee.CalcHitInfo(e.Location); ...原创 2019-02-22 10:02:27 · 3054 阅读 · 0 评论 -
项目间的json.NET程序包冲突引发set_IgnoreSerializableAttribute(Boolean)找不到的异常。
在一次程序设计中遇到了一个这样的问题: 使用webAPI作为启动项目执行程序时,都能正常通过。但是使用winform项目作为启动程序启动时,每到调用接口的时候就会出异常。通过跟踪测试发现在掉API接口时报的异常,异常提示里面有关键词Json Serialization,又有找不到方法等字样。初步先假设是json版本问题,头脑里估计预想是现在用的版本缺少某个方法。我也不知道,乱想的。接着就对项...原创 2019-01-11 09:58:01 · 357 阅读 · 0 评论 -
TreeList定位焦点节点
在Winform界面中,有的用到了TreeList控件。并且有一些功能需要用户在一个文本框中输入某些关键字,点击一个按钮能够自动去一个一个的匹配,并定位到拥有关键字的树节点。类似于: 为达到该功能,我写了一个公共方法方便系统中多处使用。/// <summary>/// 通过字符串设置焦点节点/// </summary>/// <param na...原创 2018-12-26 16:51:17 · 3173 阅读 · 2 评论 -
使用委托达到父子窗体联动
今天,在弄一个小程序,需要达到:在子窗体中点击左右按钮时,主窗体中相对应的Gridview中的焦点跟着改变。 委托一般可以这么认为:委托就是把一个方法作为另一个方法的参数去使用。 实现该功能的具体步骤:1、在子窗体中声明委托、实例委托对象//定义委托public delegate void SteNewsFormGridViewShow(int handle);...原创 2018-05-29 21:18:37 · 320 阅读 · 0 评论 -
PivotGridControl与ChartControl控件结合使用(二)
一、设置自定义列标题 1.首先设置列标题组间间隔属性为自定义2.在自定义组间间隔事件中重写组间间隔值原创 2018-08-15 15:53:02 · 702 阅读 · 0 评论 -
C# 从一个list中取出某一字段并去重生成一个新的list
public class AppointmentsDto { /// <summary> /// 资源ID /// </summary> public string ResourceID { get; set; } /// <summary> /// 部门I...原创 2018-08-09 11:18:41 · 19382 阅读 · 0 评论 -
PivotGridControl与ChartControl控件结合使用(一)
准备工作 1、准备需要统计的数据。 2、给PivotGridControl和ChartControl绑定数据源。(绑定同一个数据源) 3、设置PivotGridControl上关于ChartControl的属性//获取或设置为PivotGrid列或行创建图表控件中的系列。pivotGridControl.OptionsChartDataSource.ProvideData...原创 2018-07-25 17:36:37 · 1658 阅读 · 1 评论 -
ChartControl控件
ChartControl控件 ChartControl控件是一个可视化的图表控件,它支持你能想到的所有图形。用于对统计数据的可视化显示。最近我摸索了PivotGridControl控件与ChartControl控件的配合使用。本文简单的描述一下ChartControl控件。 常用的图表类型 通过代码设置图形//条状图chartControl.SeriesTemp...原创 2018-07-24 17:45:35 · 2779 阅读 · 1 评论 -
PivotGridControl使用(二)
本篇描述PivotGridControl控件绑定显示数据,以及一些属性的使用,显示的优化。一、绑定数据源,显示网格。下图为一份员工跟进统计表(跟进可以理解为某个人对某事或物的跟进)行区域RowArea:显示部门以及员工列区域ColumnArea:显示跟进时间数据区域DataArea:显示跟进人次代码://声明行区域显示字段var colDeptName = ne...原创 2018-07-16 15:32:16 · 4488 阅读 · 0 评论 -
PivotGridControl使用(一)
一、Pivot Grid Fields枢轴网格字段 1.首先,创建PivotGtidField对象,并将字段添加到字段集合。PivotGridField id = new PivotGridField("id_fieldName",PivotArea.RowArea);PivotGridField no = new PivotGridField("no_fieldName",Piv...原创 2018-07-10 17:46:13 · 6243 阅读 · 0 评论 -
C#控件提示内容
在系统开发过程中,某些控件需要实现这样一种功能:当鼠标移动到控件上时,在鼠标位置显示一些文字提示。比如: 在大部分控件中都有一个属性:ToolTip(获取或设置常规工具提示的内容。)比如,SimpleButton,设置了ToolTip属性以后,当程序运行时,鼠标移动到按钮上就会显示出提示内容。 这是关于自带ToolTip属性的控件显示提示信息的用法,当然也有某些...原创 2018-06-26 09:58:24 · 4097 阅读 · 0 评论 -
C# 设置dev控件下拉弹出框的宽度
关于DEV控件中的下拉控件,想要设置下拉的时候弹出窗不要太大,刚刚好和下拉控件大小一样就好可以通过属性去设置,不一定要去写个方法重绘。1、选中控件--->按F4跳转到属性页面--->展开Properties---> 设置弹出窗体属性:PopupFormSize,PopupFormMinSize(可选)2、动态设置 以CheckedComboBoxEdi...原创 2018-06-20 15:31:09 · 3328 阅读 · 1 评论 -
C#-使用反射取得窗体上的所有控件,针对部分控件初始化样式
在作系统软件时,经常有某些模块或者整个软件都会有一个固定的风格。这些风格就凸显了界面的样式,需要去设置一些控件的属性之类的去实现。 面对这种有统一样式的界面时,避免每个程序员在作界面都要每一个界面去设置相同的属性,我这里整理了一个公共方法。该方法通过传窗体对象,通过反射机制取得窗体上的每一个控件,通过循环判断控件类型,对这些不同类型的控件设置它们的属性。 /// <sum...原创 2018-06-19 10:14:22 · 3153 阅读 · 0 评论 -
简单TreeList绑定数据
一、拖放控件二、创建数据源绑定对象/// <summary> /// 操作记录类型 /// </summary> public class LogTypeInfo { /// <summary> /// ID /// </summary> p...原创 2018-06-08 17:47:27 · 5280 阅读 · 0 评论 -
barManager菜单栏的BarButtonItem按钮动态添加下拉菜单
如图效果一、下拉是一个PopupMenu菜单,所以动态创建一个PopupMenu//PopupMenu菜单var popupbbiAll = new PopupMenu(barManager1);二、创建菜单项按钮参数列表var listBbiAllParameter = new List<BarButtonItemParameter> ...原创 2018-06-08 17:26:07 · 7563 阅读 · 1 评论 -
多次调用的线程需要验证线程是否正在使用
在一次工作中,我定义了一个线程用来处理程序的查询功能。通过一个后台线程来执行查询的过程,最终把查询出来的数据绑定到DataGridView显示。然而,我还有一个TreeList控件绑定数据,当焦点节点改变时,会以当前焦点节点为条件执行查询事件,这时就会去调用执行查询的线程。经过测试发现,当TreeList的焦点改变很快时,上一个焦点的查询还没结束,当前又执行该线程,会报一个线程正忙,无...原创 2018-06-08 16:08:13 · 155 阅读 · 0 评论 -
用线程异步加载查询内容显示GridView
使用后台线程能够减轻主线程的工作量,虽然没什么明显差别,无聊弄弄的,也算是接触一下线程的使用。1、把查询加载数据交给后台线程去执行首先,先声明线程/// <summary>/// 声明用于初始化列表的线程/// </summary>protected BackgroundWorker InitBackgroundWorker;其次,在窗体加载时让线程...原创 2018-06-05 11:30:03 · 569 阅读 · 0 评论 -
父子窗体同步互动显示(非委托注册事件)
在前几天学习了一种方法,通过创建委托变量,然后给委托注册事件达到子窗体点击按钮切换数据显示的同时,父窗体的GridView的焦点行随着改变。今天找到另一个方法,不需要去使用委托,也不用从父窗体传实体列表过来。 具体实现需要知道:1>获取父窗体2>取得GridView对象3>父窗体焦点改变,取得当前焦点行的数据(实体Model)4>子窗体绑定实体M...原创 2018-05-31 13:36:47 · 251 阅读 · 0 评论 -
十进制数转颜色码(转RGB转Color)
今天碰到一个这样的问题。我在修改以前用VB写的一个功能,这个功能中有一个部分是使用着色器给一段文字上色。然后这个颜色值存入数据库中的值是一个十进制数。新项目用C#,在Winform中需要读取这个数据给文字画上颜色。 通过上网找资料以及结合个人理解,该转换过程主要有以下几个步骤:1、十进制数转成十六进制字符串。2、十六进制字符串转成RGB码。3、RGB码转成Color类型的值,给...原创 2018-05-30 21:11:09 · 13052 阅读 · 0 评论 -
RibbonForm 设置快捷键动态匹配TabControl显示的当前窗口的按钮,触发按钮点击事件
问题由来: 在程序设计中,使用Dev这套控件的工具条菜单控件所添加的菜单按钮设置快捷键。当打开界面按下快捷键时,会触发该按钮的点击事件,这是一种很方便的功能。 这种设置针对程序只有一个单一的窗体是很不错,但是一般大的项目都是一个主界面,添加一个TabControl,其它的功能窗体都是作为一个TabPage去show出来。面对这种分格的软件去通过每个界面再设置按钮快捷键就行不通了。...原创 2018-11-28 10:42:15 · 936 阅读 · 0 评论