
Visual Studio C#
个人学习,用于备忘,我今天遇上的坑,也许是你明天碰到的,若对你学习有所帮助,就是我最大的心愿
bjxiejihua
这个作者很懒,什么都没留下…
展开
-
获取当前线程名字,ID等信息
在程序中直接获取线程名字,ID等信息,代码如下。用本办法可以比较方便获取当前进程的相关信息。在程序中加入以下引用。原创 2023-01-26 16:32:40 · 1647 阅读 · 0 评论 -
Devexpress按单元格值控制整行或某单元格的颜色
需求动态显示价格列表,按要求,上涨用红色,下跌用绿色,否则用黑色。1.按单元格的UpDown列值影响整行的颜色显示。2.按单元格的值,影响部分单元格的值。原创 2022-07-30 16:46:15 · 1445 阅读 · 0 评论 -
C# 参数类型的约束
官网给予如下描述: 约束告知编译器类型参数必须具备的功能。 在没有任何约束的情况下,类型参数可以是任何类型。 编译器只能假定System.Object的成员,它是任何 .NET 类型的最终基类。 有关详细信息,请参阅使用约束的原因。 如果客户端代码使用不满足约束的类型,编译器将发出错误。 通过使用where上下文关键字指定约束。 官网给了许细的解释,以及提供了详尽的例子,大家可以上官网学习类型参数约束 - C# 编程指南 | Microsoft Docs...原创 2022-01-13 08:40:37 · 689 阅读 · 0 评论 -
C# 使用多线程,关闭窗体时,退出所有线程
关闭程序,销毁所有子线程转载 2022-01-10 05:11:26 · 3533 阅读 · 0 评论 -
动态选择(或改变)ComboBox内容
应用场景:根据某值,由程序自动选择相应的ComboBox,并显示问 题:通过设置SelectedValue, Text, SelectText, ValueMember, DisplayMember都不能达到目的, 后来,经过多次测试,可以通过改变SelectedIndex,可以达到自动选择ComboBox目的。 接下来要解决的问题就是如何查找某值的SelectedIndex的值了,ComboBox有个方法FindString可以查找某值的Index, 需要注意的是,FindString只能...原创 2022-01-01 23:30:42 · 2184 阅读 · 0 评论 -
【无标题】Lambda表达式详解
前言 1、天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西。 2、夸夸lambda吧:简化了匿名委托的使用,让你让代码更加简洁,优雅。据说它是微软自c#1.0后新增的最重要的功能之一。lambda简介 lambda运算符:所有的lambda表达式都是用新的lambda运算符 " => ",可以叫他,“转到”或者 “成为”。运算符将表达式分为两部分,左边指定输入参数,右边是lambda的主体。 lambda表达式:...转载 2021-12-19 15:48:35 · 716 阅读 · 0 评论 -
2021-05-31
C#反射(Reflection)详解1、 什么是反射2、 命名空间与装配件的关系3、 运行期得到类型信息有什么用4、 如何使用反射获取类型5、 如何根据类型来动态创建对象6、 如何获取方法以及动态调用方法7、 动态创建委托1、什么是反射Reflection,中文翻译为反射。这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组转载 2021-05-31 17:11:51 · 144 阅读 · 0 评论 -
C# 字符串前后补齐空格
若要输出一个定长的字符串,其补齐空格可用如下方法 string Msg = "要显示的信息"; /// 显示字符串包含空格的总长度 int strLength = 200; /// 左补空格,相当于是右对齐 Msg = Msg.PadLeft(strLength); ///...原创 2021-05-04 12:48:29 · 5142 阅读 · 0 评论 -
在程序中改变TabControl控件显示的页面
需求:在界面其它操作的时候,TAB先项卡能根据需要切换到不同的TAB /// xtraTabControl1为Tab控件,它包含有两个tab先项卡,其中一个名为xtraTabpage1CommodityAdd /// 若选中的选项卡,不是需要的,则更改之 if(xtraTabControl1.SelectedTabPage != xtraTabPage1CommodityAdd) { xtraTabControl1.SelectedTabPage = xtraTabPage1原创 2021-02-28 16:39:35 · 1112 阅读 · 0 评论 -
获取DevExpress控件 LookUpEdit,GridLookUpEdit 选中行其它列的值
在使用LookUpEdit作为下拉选择框时,若我们想得到选中行的数行,可用如下代码/// gridLookUpEdit1InstrumentIDA是LookUpEdit的名称/// DataRow dr = gridLookUpEdit1InstrumentIDA.Properties.View.GetFocusedDataRow();/// 读取数据行的"ExchangeID", "ConID"数据列 textEdit2ExchangeIDA3.Text =...原创 2021-02-28 10:55:18 · 3771 阅读 · 1 评论 -
VS2017 Winform 设计器异常原因排查
VS2017 Winform 设计器异常原因排查Winform 软件开发过程中,使用可视化设计器 大大提高了应用程序布局效率 ,今天遇到设计器报错,如下错误截图(1-1) ,记录一下排错过程。 前期编写用户控件,从工具箱拖出控件时报错,截图如下(1-1)。程序实际运行过程中不存在此类错误。后来发现,是vs 2017 设计器呈现控件外观时,默认执行了自定义控件的 类构造或 Load 方法引起的 。 那为什么程序实际运行没异常? 于是,在抛出异常点加了 try ca...转载 2021-02-19 23:50:24 · 1239 阅读 · 0 评论 -
C# 编程常用代码段(不断增加,仅供自用)
可能是因为自己的记忆有问题了,一些常用的功能,每次写程序都要去百度一下,该怎么写,为此,把常用功能的代码段贴于此,主要是为了日后自己写代码使用,若对大家还有帮助,最好。1. 增加Devexpress Grid列弹出菜单的菜单项(含自定义事件及处理) /// <summary> /// 右键弹出菜单后,增加自定义的两项 /// </summary> /// <param name="sender"&g...原创 2020-12-03 17:35:25 · 794 阅读 · 0 评论 -
C#获取当前程序运行路径的方法集合
//获取当前进程的完整路径,包含文件名(进程名)。string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)//获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。stringstr = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;r.转载 2020-11-28 09:16:39 · 1455 阅读 · 0 评论 -
C#编程向SQLite数据库中正确写入DateTime类型数据
最近用C#编写了一个程序,里面涉及向SQLite数据库写入DateTime类型数据,实际时间为2012/11/30 0:20:00,但写入数据库后变成1899/12/30 00:00:00。实际情况是时间写入数据库失败,1899/12/30 00:00:00是数据库的默认值。经过尝试,发现不能直接用C#的DateTime赋值,而应使用字符串给[PASS_TIME]字段赋值。生成时间字符串代码:DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");修改.转载 2020-11-25 06:38:35 · 6296 阅读 · 0 评论 -
2020-11-22
业务需求:业务工作中经常需要对表格中的数据进行处理,包括过滤、复合计算等。过滤需要有过滤条件,复合计算需要计算公式。这两种场景都需要一个表达式编辑器。GridControl自带过滤条件的表达式编辑器,我们要做的就是把这个编辑器拿出来,独立于GridControl,进而可以绑定到其它控件上。实现原理:找到表达式编辑器内部类UnboundColumnExpressionEditorForm,这是一个窗口类。我们将其边框设置为None,Dock属性设置为Fill,拖放到控件上,使其看上去像个控件,并公转载 2020-11-22 20:57:55 · 210 阅读 · 0 评论 -
C#中MessageBox用法大全(附效果图)
C#中MessageBox用法大全(附效果图)我们在程序中经常会用到MessageBox。 MessageBox.Show()共有21中重载方法。现将其常见用法总结如下:1.MessageBox.Show("Hello~~~~");最简单的,只显示提示信息。2.MessageBox.Show("There are something wrong!","ERROR");可以给消息框加上标题。3.if (MessageBox.Show("Delete th...转载 2020-11-19 07:30:54 · 11575 阅读 · 0 评论 -
C# 反射功能的使用(很详细)
一、使用方法过程及步骤 1. 定义要访问类的全名 2. 获取该类的类型 3. 实例化该类 4. 获取该类的字段、属性,方法 5. 设置该字段或属性内容,或调用其方法从而达到使用字符串访问相应类的目的二、代码示例 1. 根据窗口类的名称,产生一个新的窗口,相当于new 窗口类 /// 1. 定义窗口类名称:(窗口类的字符串名字,需要全路径名,否则获取不到TYPE) ...原创 2020-11-14 20:11:41 · 4005 阅读 · 1 评论 -
C# DataGridView增删改后,把数据同步到数据库(表格不需要有主键,新版可以处理Sqlite的DateTime数据)
网上介绍的同步方法,都需要表有主键,若没有主键该怎么办呢,为此,我自己对DATATABLE增删改自动生成相应的INSERT, DELETE, UPDATE相应的SQL语句来完成这些功能为了不会错删,错改,对于所有没有改变的字段都作为条件,代码如下:1. 写表的主程序 要点:(1)因为DELETE后的数据不能直接读取,所以通过DataView进行了一次转换 (2)针对修改的数据,有可能又改回原数据,但DataTable是认为修改的,但目前的程序在自动...原创 2020-11-09 05:36:27 · 2736 阅读 · 0 评论 -
C# 根据DATATABLE自动创建数据库表
在实际应用中,针对C#不同类型,要转换成不同数据库类型,只要修改相应的CASE语句即可,创建数据库的表名为DataTable指定的表名 /// <summary> /// 根据Datable参数,构建建表的SQL语句,仅对以下的数据类型进行处理 /// string, int16/32/64, double, decimal, date, bool /// 若要处理其它类型的列,需要增加相应的case语句 ...原创 2020-11-09 05:02:07 · 2636 阅读 · 0 评论 -
C#中string.format用法详解
C#中string.format用法详解string.Format对C#字符串格式化String.Format 方法的几种定义:String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项。String.Format (String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。String.Format (IFormatProvider, S转载 2020-11-06 18:37:49 · 2458 阅读 · 0 评论 -
C# 反射功能
反射的用途: (1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。 (2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。 (3)使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。 (4)使用MethodInfo了解方法的名称、返...转载 2020-11-05 20:41:24 · 918 阅读 · 0 评论 -
C#中的invoke方法
C#中的invoke方法在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态,例如:某个按钮上的文本原先叫“打开”,单击之后按钮上的文本显示“关闭”,初学者往往会想当然地这么写:void ButtonOnClick(object sender,EventArgs e){button.Text="关闭";}这样的写法运行程序之后,可能会触发异常,异常信息大致是“不能从不是创建该控件的线程调用它”。注意这里是“可能”...转载 2020-10-23 09:09:14 · 7476 阅读 · 0 评论 -
Devexpress 给数据行或单元格指定编辑控件
网上有大量的给Devexpress的Grid某列指定编辑器的文章,但很少给行指定编辑控件的,使用本文的方法不仅可以给数据行指定编辑器,甚至可以为每个单元格指定一个编辑器 先看一下效果图:1. 定义两个ComboBox: public DevExpress.XtraEditors.Repository.RepositoryItemComboBox ricbAlign = new DevExpress.XtraEditors.Repository.RepositoryI...原创 2020-09-06 15:12:36 · 1671 阅读 · 0 评论 -
若干个纵向排列的GridView, 实现横向的同步滚动
如下图所示:希望拖动最下方的横向滚动条,实现表一,表二同步滚动,代码如下 private void gridView3_LeftCoordChanged(object sender, EventArgs e) { float gvWidth1 = 0; float gvWidth2 = 0; foreach (DevExpress.XtraGrid.Columns.GridColumn colName in原创 2020-09-04 12:05:45 · 601 阅读 · 0 评论 -
C# Devexpress动态加载Panel, 同方向停靠以TAB方式加载
Devexpress动态加载Panel办法,请看我其它的文章,本文仅介绍以TAB方式加载的办法及遇到的问题我们计划把加载Panel时,检查一下当前是否有同样停靠方式的Panel,如果没有,直接加一个Panel,若有,以TAB的方式停靠在原有的Panel上1. 检查同方向Panel // 查找该DockingStyle是否有Panel DockPanel sameDockPanel = null; foreach (DockPa原创 2020-08-18 17:32:02 · 1898 阅读 · 0 评论 -
数据库Sqlite3在C#中的应用问题的解决(从死锁到性能成千上万倍的提升)
因想把XML文件存放的数据倒到Sqlite数据库,数据量大于200条就会发生死锁,以下的程序就是会造成死锁的 SQLiteConnection conn = new SQLiteConnection(connectString); SQLiteCommand cmd = new SQLiteCommand(); conn.Open(); sql = "INSERT INTO..原创 2020-08-16 17:12:48 · 1515 阅读 · 1 评论 -
Devexpress控件使用-CheckListBox(Check选中或不选是ItemCheck事件)
//清空项 checkedListBoxControl1.Items.Clear(); //绑定 checkedListBoxControl1.DataSource = dt; checkedListBoxControl1.ValueMember = "ID"; checkedListBoxControl1.DisplayMember = "Name";...转载 2020-08-15 07:14:47 · 1794 阅读 · 0 评论 -
Devexpress 动态建立DockPanel大小的控制
在真是个大坑,开始反复用winPanel.Size.Width设置宽度,一直无效,后来只好用手工在界面上建一个,然后改变Panel大小,看一看程序设计器相应的代码的变化,才知道要用System.Drawing.Size(775, 656)来设置Panel的大小 // 创建Panel DockPanel winPanel = new DockPanel(); winPanel = dockManager1.AddPa...原创 2020-08-15 07:00:31 · 1701 阅读 · 0 评论 -
C# 查询SQL数据库中指定表是否存在
1. 该程序可以直接中connIBDealDBString是针对名为IBDealDB数据库的连接字符串2. 参数:表名,数据库名:程序按指定的数据库查询是否存在该表,若存在返回true, 否则返回false3. 程序利用ExecuteScalar()特性(返回结果的第一行,第一列),通过SQL语句去查询sysobjects来实现目的,因sysobjects数据量少,通过这种办法判断表是否存在,也较少的消耗资源public static Boolean IsExistTable(string..原创 2020-08-12 19:28:52 · 2486 阅读 · 0 评论 -
C# 在程序中创建SQL数据库
1. 以下程序默认在当前运行路径下的子目录.\SqlDB\下存放数据库文件2. 数据库文件名称也使用固定的,大家可以根据需要修改3. 这段代码的最大亮点是,把创建数据库的SQL语句折行显示,方便大家对相关数据进行修改,也不容易出错,方便大家拷贝使用4. 我的硬盘空间比较大,数据库文件定义得比较大,大家试用时可以把这值改小一些即可 /// <summary> /// 创建数据库 /// </summary>原创 2020-08-11 19:33:19 · 1626 阅读 · 2 评论 -
在 Visual Studio 中创建一个数据库并添加表
在 Visual Studio 中创建一个数据库并添加表 可以使用 Visual Studio 来创建和更新 SQL Server Express LocalDB 中的本地数据库文件。还可以通过在 Visual Studio 的 "SQL Server 对象资源管理器工具" 窗口中执行 transact-sql 语句来创建数据库。在本主题中,我们将创建一个.mdf文件并使用表设计器添加表和键。 先决条件 若要完成本演练,你需要安装在 Visual Studio 中的.net 桌面...转载 2020-08-10 12:05:02 · 19208 阅读 · 0 评论 -
在Devexpress中,使用DockPanel展示Windows窗体或用户控件
tabbedView1.BeginUpdate(); // 创建Panel DockPanel taticsPanel = new DockPanel(); taticsPanel = dockManager1.AddPanel(DockingStyle.Left); taticsPanel.Text = "WindowsForm Show in DockPanel"; ...原创 2020-08-10 01:43:24 · 2398 阅读 · 0 评论 -
DevExpress 单元格的设置(可设字体、字号、前景色、背景色)
先贴图让大家看一下效果单元格设置示例程序实现了:三种前景色(红、黑、绿)、两种背景(单一黄底、渐变)、红字的字体放大了程序比较简单,希望对大家有所帮助 DataTable myDt = new DataTable(); //仅是一个测试表,仅对Width列单元格进行设置 myDt.Columns.Add("HeadText", typeof(string)); myDt.Columns.Ad原创 2020-07-16 20:09:55 · 2153 阅读 · 0 评论 -
Devexpress 常用设置(更新中......)
1. GridView1新增行gridView1.AddNewRow();2. DataTable创建列 DataTable myDt = new DataTable(); myDt.Columns.Add("HeadText", typeof(string)); myDt.Columns.Add("HeaderHAlign", typeof(int)); myDt.Columns.Add("HA.原创 2020-07-16 08:03:43 · 1012 阅读 · 0 评论 -
C#获取当前CPU使用率(只用一条语句)
1. 添加引用 using System.Diagnostics;2. 定义变量 public PerformanceCounter CpuOccupied = new PerformanceCounter();3. 使用以下语句就能读取当前CPU占用率 CpuOccupied.NextValue()原创 2020-07-11 10:56:15 · 4506 阅读 · 4 评论 -
C#获取CPU占用率、内存占用、磁盘占用、进程信息
using System;using System.Collections.Generic;using System.Diagnostics;using System.Threading;using System.IO;using System.Text;using System.Management;using System.Runtime.InteropServices;namespace Lemony.SystemInfo{ /// /// 系统信息类 - 获取...转载 2020-07-11 09:25:33 · 5193 阅读 · 3 评论 -
C# devpress 的gridview 控件的行拖拽
首先,添加引用:usingDevExpress.XtraGrid.Views.Grid.ViewInfo;gridControl1.AllowDrop =true; // 确保能够拖拽 gridView1.OptionsSelection.MultiSelect =true; //确保能够多选 gridView1.OptionsSelection.EnableAppearanceFocusedCell =...转载 2020-07-09 02:50:30 · 946 阅读 · 0 评论 -
Dev GridControl GridView常用属性及方法
1.隐藏最上面的GroupPanel:gridView1.OptionsView.ShowGroupPanel=false;2.得到当前选定记录某字段的值:sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString();3.数据只读:gridView1.OptionsBehavior.Editable=false;4.不显示MasterDetailView:gridView1....转载 2020-07-08 05:11:16 · 783 阅读 · 0 评论