<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[北京谢吉华的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/u014335216</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u014335216]]></copyright><item><title><![CDATA[获取当前线程名字，ID等信息]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/128766111</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/128766111</guid><author>u014335216</author><pubDate>Thu, 26 Jan 2023 16:32:40 +0800</pubDate><description><![CDATA[在程序中直接获取线程名字，ID等信息，代码如下。用本办法可以比较方便获取当前进程的相关信息。在程序中加入以下引用。]]></description><category></category></item><item><title><![CDATA[Devexpress按单元格值控制整行或某单元格的颜色]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/126074196</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/126074196</guid><author>u014335216</author><pubDate>Sat, 30 Jul 2022 16:46:15 +0800</pubDate><description><![CDATA[需求动态显示价格列表，按要求，上涨用红色，下跌用绿色，否则用黑色。1.按单元格的UpDown列值影响整行的颜色显示。2.按单元格的值，影响部分单元格的值。]]></description><category></category></item><item><title><![CDATA[C# 参数类型的约束]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/122466329</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/122466329</guid><author>u014335216</author><pubDate>Thu, 13 Jan 2022 08:40:37 +0800</pubDate><description><![CDATA[官网给予如下描述：

  约束告知编译器类型参数必须具备的功能。 在没有任何约束的情况下，类型参数可以是任何类型。 编译器只能假定System.Object的成员，它是任何 .NET 类型的最终基类。 有关详细信息，请参阅使用约束的原因。 如果客户端代码使用不满足约束的类型，编译器将发出错误。 通过使用where上下文关键字指定约束。

  官网给了许细的解释，以及提供了详尽的例子，大家可以上官网学习

类型参数约束 - C# 编程指南 | Microsoft Docs
...]]></description><category></category></item><item><title><![CDATA[C# 使用多线程，关闭窗体时，退出所有线程]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/122402888</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/122402888</guid><author>u014335216</author><pubDate>Mon, 10 Jan 2022 05:11:26 +0800</pubDate><description><![CDATA[关闭程序，销毁所有子线程]]></description><category></category></item><item><title><![CDATA[动态选择（或改变）ComboBox内容]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/122272284</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/122272284</guid><author>u014335216</author><pubDate>Sat, 01 Jan 2022 23:30:42 +0800</pubDate><description><![CDATA[应用场景：根据某值，由程序自动选择相应的ComboBox，并显示

问 题：通过设置SelectedValue, Text, SelectText, ValueMember, DisplayMember都不能达到目的， 后来，经过多次测试，可以通过改变SelectedIndex，可以达到自动选择ComboBox目的。

  接下来要解决的问题就是如何查找某值的SelectedIndex的值了，ComboBox有个方法FindString可以查找某值的Index, 需要注意的是，FindString只能...]]></description><category></category></item><item><title><![CDATA[【无标题】Lambda表达式详解]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/122024977</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/122024977</guid><author>u014335216</author><pubDate>Sun, 19 Dec 2021 15:48:35 +0800</pubDate><description><![CDATA[前言

    1、天真热，程序员活着不易，星期天，也要顶着火辣辣的太阳，总结这些东西。

    2、夸夸lambda吧：简化了匿名委托的使用，让你让代码更加简洁，优雅。据说它是微软自c#1.0后新增的最重要的功能之一。

lambda简介

  lambda运算符：所有的lambda表达式都是用新的lambda运算符 " =&gt; ",可以叫他，“转到”或者 “成为”。运算符将表达式分为两部分，左边指定输入参数，右边是lambda的主体。

    lambda表达式：
...]]></description><category></category></item><item><title><![CDATA[2021-05-31]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/117421193</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/117421193</guid><author>u014335216</author><pubDate>Mon, 31 May 2021 17:11:51 +0800</pubDate><description><![CDATA[C#反射(Reflection)详解
1、 什么是反射
2、 命名空间与装配件的关系
3、 运行期得到类型信息有什么用
4、 如何使用反射获取类型
5、 如何根据类型来动态创建对象
6、 如何获取方法以及动态调用方法
7、 动态创建委托
1、什么是反射
Reflection，中文翻译为反射。
这是.Net中获取运行时类型信息的方式，.Net的应用程序由几个部分：‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成，而反射提供一种编程的方式，让程序员可以在程序运行期获得这几个组]]></description><category></category></item><item><title><![CDATA[C# 字符串前后补齐空格]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/116399475</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/116399475</guid><author>u014335216</author><pubDate>Tue, 04 May 2021 12:48:29 +0800</pubDate><description><![CDATA[若要输出一个定长的字符串，其补齐空格可用如下方法




                 string Msg = "要显示的信息";

                /// 显示字符串包含空格的总长度
                int strLength = 200;         

                /// 左补空格，相当于是右对齐
                Msg = Msg.PadLeft(strLength);

                ///...]]></description><category></category></item><item><title><![CDATA[Devexpress Layout排版功能详解]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/116091189</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/116091189</guid><author>u014335216</author><pubDate>Sat, 24 Apr 2021 16:31:07 +0800</pubDate><description><![CDATA[一、Layout的Item快速多选


	在Layout控件中点击鼠标右键，打开Customize Layout窗口
	



	在Customize Layout窗口就可以方便对Item实现多选了
	




二、如果宽度调整不动，将Size contrains设为Free Sizing, 若还调整不动，就需要把MinSize调成1，1

  Siae contrains通过右键菜单设置（点击右键的时候，要在选中的ITEM的最后一行），若排版弄乱了，可以对所有的Item设置一下Reset to De...]]></description><category></category></item><item><title><![CDATA[Devexpree Layout, Datalayout画边框]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/115996102</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/115996102</guid><author>u014335216</author><pubDate>Thu, 22 Apr 2021 07:09:30 +0800</pubDate><description><![CDATA[Layout画边框，可以定义Layout的CustomDraw事件，实现边框绘制，代码如下：

         /// &lt;summary&gt;
        /// 给Layout画个边框
        /// &lt;/summary&gt;
        /// &lt;param name="sender"&gt;&lt;/param&gt;
        /// &lt;param name="e"&gt;&lt;/param&gt;
        private void d.]]></description><category></category></item><item><title><![CDATA[C#中timer类的用法]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/114577112</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/114577112</guid><author>u014335216</author><pubDate>Tue, 09 Mar 2021 10:29:15 +0800</pubDate><description><![CDATA[C#中timer类的用法

1、System.Windows.Forms.Timer

实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 Windows 窗体应用程序中，并且必须在窗口中使用。

2、System.Threading.Timer

提供以指定的时间间隔执行方法的机制。无法继承此类。

3、System.Timers.Timer

在应用程序中生成定期事件。

这三个定时器位于不同的命名空间内，上面大概介绍了3个定时器的用途，其中第一个是只能在Windows窗体中使用的...]]></description><category></category></item><item><title><![CDATA[在程序中改变TabControl控件显示的页面]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/114229228</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/114229228</guid><author>u014335216</author><pubDate>Sun, 28 Feb 2021 16:39:35 +0800</pubDate><description><![CDATA[需求：在界面其它操作的时候，TAB先项卡能根据需要切换到不同的TAB


 /// xtraTabControl1为Tab控件，它包含有两个tab先项卡，其中一个名为xtraTabpage1CommodityAdd

 /// 若选中的选项卡，不是需要的，则更改之
 if(xtraTabControl1.SelectedTabPage != xtraTabPage1CommodityAdd)
  {
        xtraTabControl1.SelectedTabPage = xtraTabPage1]]></description><category></category></item><item><title><![CDATA[获取DevExpress控件 LookUpEdit，GridLookUpEdit 选中行其它列的值]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/114212131</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/114212131</guid><author>u014335216</author><pubDate>Sun, 28 Feb 2021 10:55:18 +0800</pubDate><description><![CDATA[在使用LookUpEdit作为下拉选择框时，若我们想得到选中行的数行，可用如下代码



///  gridLookUpEdit1InstrumentIDA是LookUpEdit的名称
///  
     DataRow dr = gridLookUpEdit1InstrumentIDA.Properties.View.GetFocusedDataRow();

/// 读取数据行的"ExchangeID", "ConID"数据列
    textEdit2ExchangeIDA3.Text =...]]></description><category></category></item><item><title><![CDATA[VS2017 Winform 设计器异常原因排查]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/113874172</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/113874172</guid><author>u014335216</author><pubDate>Fri, 19 Feb 2021 23:50:24 +0800</pubDate><description><![CDATA[VS2017 Winform 设计器异常原因排查



Winform 软件开发过程中，使用可视化设计器 大大提高了应用程序布局效率 ，今天遇到设计器报错,如下错误截图（1-1） ，记录一下排错过程。

   前期编写用户控件，从工具箱拖出控件时报错，截图如下（1-1）。程序实际运行过程中不存在此类错误。后来发现，是vs 2017 设计器呈现控件外观时，默认执行了自定义控件的 类构造或 Load 方法引起的 。 那为什么程序实际运行没异常?

   于是，在抛出异常点加了 try ca...]]></description><category></category></item><item><title><![CDATA[DevExpress控件-lookupedit的使用方法详解（图文）]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/113813113</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/113813113</guid><author>u014335216</author><pubDate>Mon, 15 Feb 2021 03:27:39 +0800</pubDate><description><![CDATA[绑定数据源:








	lookupedit.Properties.ValueMember = 实际要用的字段; //相当于editvalue
	
	
	lookupedit.Properties.DisplayMember =要显示的字段; //相当于text
	
	
	lookupedit.Properties.DataSource = 数据源;
	




















常用属性








	lookupedit.PopupWidth = 1...]]></description><category></category></item><item><title><![CDATA[解决DBConCurrencyException并发冲突异常]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/111748102</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/111748102</guid><author>u014335216</author><pubDate>Sat, 26 Dec 2020 15:26:57 +0800</pubDate><description><![CDATA[解决DBConCurrencyException并发冲突异常



zhoufs2010-04-17 09:28:001226收藏

文章标签：数据库functionexceptioncommandstringsql

在数据访问层，我们一般使用DataAdapter来获取或更新数据库数据。很经常地，我们使用 CommandBuilder为DataAdapter自动创建InsertCommand、UpdateCommand、DeleteComand。这 种方式确实很方便，仅需很少的代码...]]></description><category></category></item><item><title><![CDATA[C# 编程常用代码段（不断增加，仅供自用）]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/110550149</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/110550149</guid><author>u014335216</author><pubDate>Thu, 03 Dec 2020 17:35:25 +0800</pubDate><description><![CDATA[可能是因为自己的记忆有问题了，一些常用的功能，每次写程序都要去百度一下，该怎么写，为此，把常用功能的代码段贴于此，主要是为了日后自己写代码使用，若对大家还有帮助，最好。

1. 增加Devexpress Grid列弹出菜单的菜单项（含自定义事件及处理）


        /// &lt;summary&gt;
        /// 右键弹出菜单后，增加自定义的两项
        /// &lt;/summary&gt;
        /// &lt;param name="sender"&g...]]></description><category></category></item><item><title><![CDATA[C#获取当前程序运行路径的方法集合]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/110259131</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/110259131</guid><author>u014335216</author><pubDate>Sat, 28 Nov 2020 09:16:39 +0800</pubDate><description><![CDATA[//获取当前进程的完整路径，包含文件名(进程名)。
string str = this.GetType().Assembly.Location;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
//获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径，包含文件名(进程名)。
stringstr = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
r.]]></description><category></category></item><item><title><![CDATA[C#编程向SQLite数据库中正确写入DateTime类型数据]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/110107373</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/110107373</guid><author>u014335216</author><pubDate>Wed, 25 Nov 2020 06:38:35 +0800</pubDate><description><![CDATA[最近用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");

修改.]]></description><category></category></item><item><title><![CDATA[2020-11-22]]></title><link>https://blog.youkuaiyun.com/u014335216/article/details/109964007</link><guid>https://blog.youkuaiyun.com/u014335216/article/details/109964007</guid><author>u014335216</author><pubDate>Sun, 22 Nov 2020 20:57:55 +0800</pubDate><description><![CDATA[业务需求：

业务工作中经常需要对表格中的数据进行处理，包括过滤、复合计算等。过滤需要有过滤条件，复合计算需要计算公式。这两种场景都需要一个表达式编辑器。GridControl自带过滤条件的表达式编辑器，我们要做的就是把这个编辑器拿出来，独立于GridControl，进而可以绑定到其它控件上。

实现原理：

找到表达式编辑器内部类UnboundColumnExpressionEditorForm，这是一个窗口类。我们将其边框设置为None，Dock属性设置为Fill，拖放到控件上，使其看上去像个控件，并公]]></description><category></category></item></channel></rss>