- 博客(394)
- 资源 (6)
- 收藏
- 关注
原创 Winform布局错乱调整
本文探讨了在窗体布局中使用Panel控件实现上中下三部分布局的问题。当直接添加内容时,窗体最大化会导致布局异常。通过将三部分内容分别放入三个小Panel(设置Dock属性为Top、Fill、Bottom)并依次添加,发现Panel2会被Panel1覆盖。测试表明控件添加顺序会影响布局层级,先添加的控件具有更高权重。最终解决方案是调整添加顺序:先添加中间Panel2,再添加顶部Panel1和底部Panel3,从而获得正确的三部分布局效果。
2025-12-10 11:01:11
151
原创 DevExpress GridControl多列头实现方式
如何解决这个问题,研究了好久,最后多建了一行Band,每一个对应一个Col列,然后与Band一一对应。因为Band可以设置占几行的列头,所以便正常实现。之后还有重要一步,把Col列头给隐藏了,仅显示Band头就完美了。如下图,列正常建,多列头除最后一列,其他都建成Band。方法二,和方法一类似,只是band头和col头名字一样的都放在一个空band下面,如图。如若实现如下图的多列头情况,常用Band实现。
2025-09-08 16:18:48
257
原创 使用dnspy调试服务端接口程序
2.依次尝试启动dnSpy-86.exe和dnSpn-64.exe来调试附加(快捷键Ctrl+Alt+P),查看附加列表里是否有w3wp.exe。如果没有则更改iis该网站的应用程序池,双击集成编辑托管管道模式集成改为经典试试。4.附加w3wp.exe后,执行以下操作,再模块中搜索需要调试的程序集名称,如果没搜到重复3。如下图打开或拖入文件,点击启动,打上断点即可调试。如果是IIS程序上的webservice接口,则需要注意的地方很多。5.搜到后双击,在左侧的临时路径程序集中就可以展开,就可以正常调试了。
2025-08-26 16:51:40
265
原创 调用接口报错,使用postman调用就没问题如何解决
Postman默认会添加类似"PostmanRuntime/7.26.10"的User-Agent头,而C#的HttpClient默认不包含此头。C#调用接口报错而Postman正常时,添加User-Agent头通常是关键解决方案之一。Content-Type头:需明确指定如"application/json"。部分API会通过User-Agent识别请求来源,缺失时可能返回403错误。用Fiddler对比Postman和C#的实际请求头差异。User-Agent的必要性。
2025-07-17 13:31:58
543
原创 byte[]作为接口参数传递的方法
将文件字节直接通过Encoding.UTF8.GetString()转换为字符串,再通过Encoding.UTF8.GetBytes()转回时,部分字节可能被替换为0xEF 0xBF 0xBD(UTF-8的替换字符)。UTF-8的编码规则:UTF-8会对无效的Unicode字节序列(如非文本二进制数据)进行替换或丢弃,导致原始字节被篡改。若二进制数据中包含高位字节(如0xFF),UTF-8会将其视为非法字符并处理,造成数据丢失。2. 直接传输byte数组(适用于SOAP/WCF)。
2025-07-17 08:48:02
537
原创 oracle大数据量下优化的体验
IN在列表值较少时也能利用索引,但值过多或子查询结果集大时可能失效。因此in在值少的时候效率等于=,多时候全表扫描。实测案例:某场景下将IN替换为EXISTS后,查询时间从11分钟降至15秒,说明IN在大数据量子查询中性能风险较高。因此,要根据表字段的类型去赋值,不能随意切换类型,也尽量不要去做表达式条件,等号右边可以有表达式,左侧最好不要有。field1为串类型且已加索引,使用field1||‘1’='1231’用了103s。field1为串类型且已加索引,使用field1 =123用了94s。
2025-07-17 08:31:25
208
原创 Gridcontrol的checkbox列使用疑惑
出现这种差异的主要原因在于主窗体和自定义控件中GridControl的列生成方式和数据绑定处理方式不同。而自定义控件中手动配置了列,并且处理了非bool类型到CheckBox状态的转换,所以能够支持string或int类型。但当设置为bool类型时,由于数据源中该列的实际数据可能并不是bool类型(或者与期望的bool格式不一致),导致绑定失败。,使用gridcontrol,并新增一列为IsPicking,并绑定一个名为ck_ispicking的checkEdit。这个时候赋值方式变了。
2025-06-03 14:48:48
296
原创 C#命名类型前缀习惯改进
我这几天有一个疑惑,我之前用过一些变量命名,有些混乱,如string sql,string strSql,string sqlStr, string strName,string nameStr,bool boValid,stringbuilder sbFileNames, gridcontrolPerson,textbox txtFilter。我之所以加是想着在编码的时候知道他是什么类型的,但是我有时候前缀写在前面,有时候写在后面,很混乱,我已我查了资料,想规范自己的写法。
2025-05-30 09:52:04
854
原创 C# 打印PDF的常用方法
这里先提供一个helper类的模板LocalPath需要注意的是,它虽然是一种简单且常用的方法。但这种方法依赖于系统关联的默认应用程序来处理打印任务,适用于大多数情况,但存在一些限制和潜在问题。如pdf后缀没有关联默认程序会报错。所以我一般不会使用这种方式。下面会罗列其他的方法和优缺点filePath:绕过默认应用程序,强制使用 Adobe Reader。:需硬编码 Adobe 路径,可能因版本或安装位置不同失效。:直接控制 Adobe 软件,可靠性高。
2025-05-29 16:10:51
1428
原创 C# Datatable筛选过滤各方式详解
本文介绍了C#中DataTable的四种常用数据筛选方法:1)Select方法,支持SQL表达式语法;2)LINQ查询,提供强类型支持;3)DataView过滤,适合UI绑定;4)动态条件构建,用于运行时生成查询条件。重点分析了各方法的排序行为差异:Select受主键影响,LINQ保持原始顺序,DataView需单独设置排序。文章对比了不同方法的特点和适用场景,建议根据数据量大小、查询频率和业务复杂度选择合适方案,并提醒处理特殊字符时需注意SQL注入风险。最后提供了性能对比和使用建议,帮助开发者优化数据筛选
2025-05-28 16:30:24
2815
原创 DevExpress GridControl 复选列实时获取选中状态的解决方案
这种方法避免了直接使用 PostEditor(),通过延迟执行确保UI操作完成后再提交更改。PostEditor() 会强制关闭编辑器,中断了复选框的交互流程17。CellValueChanged 在单元格失去焦点时才会提交更改1。EditorShowMode.Click:允许通过点击直接编辑。ImmediateChecked:使复选框立即响应状态变化。这种方法可以精确控制复选框状态与数据源的同步2021。
2025-05-20 15:42:41
596
原创 使用itextsharp5.0版本来合并多个pdf文件并保留书签目录结构
【代码】使用itextsharp4.8版本来合并多个pdf文件并保留书签目录结构。
2025-05-15 10:05:34
440
原创 关于Oracle存储过程中的IN子句传参的问题(不能直接传字符串,需要处理)
需求:需要将多个参数作为一个参数传给存储过程执行,如:参数’1000’,‘2000’,‘3000’,'4000’等多个参数 作为一个字符串参数传递给存储过程PROC_RPT110(?存储过程将这个参数作为查询语句 in(‘1000’,‘2000’,‘3000’,‘4000’)的条件查询多个值。调用存储过程时先把参数批量插入这个临时表,此时存储过程不需要传递参数,存储过程再通过如下语句查询。3、通过创建临时表,调用前,把那些参数存入临时表里,存储过程再通过查询临时表取值。定义函数splitStr。
2024-06-17 18:00:39
775
2
原创 oracle存储过程解锁
然后再去查查第一步还有没有锁定的,如果有重复操作即可。第一步根据存储过程查出被锁的session_id。第二步,拿到session_id后,去查进程。第三步,杀session解锁。使用工具plsql。
2023-05-15 17:23:53
2912
原创 oracle ORA-01704: string literal too long
当oracle数据表中有clob类型字段时候,insert或update的sql语句中,可能该字段的值的长度超过4000个就会报错。解决方案:使用存储过程写法如下。
2023-04-17 09:57:38
3832
1
原创 C#中的break与continue和return的区别
Return其实是针对方法体的,它的作用域是包含它的外层方法(不管是无返回值或者有返回值)。所以尽管return在多层for循环嵌套中,因为它针对方法体,所以它一执行。C#中常使用的两种循环for和foreach循环(这两种循环使用break,continue,break效果是一致的),中断循环时候,常常使用break与continue。continue:跳出本次循环。如果循环嵌套,作用域为紧包着它的哪层循环。break:跳出整个循环。如果循环嵌套,作用域为紧包着它的哪层循环。
2023-03-20 11:45:05
1818
原创 LINQ的左连接、右连接、内连接
注:上例中使用了DefaultIfEmpty操作符,它能够为实序列提供一个默认的元素。default关键字对于引用类型将返回null,而对于值类型则返回0。对于结构体类型,则会根据其成员类型将它们相应地初始化为null(引用类型)或0(值类型)说明:新生成的列表list有两个属性info1,info2。其中info1对应的 tableInfos1 表,info2对应的 tableInfos2 表。我们可以不使用default关键字,但在要DefaultIfEmpty中给定当空时的默认对象值。
2022-12-20 16:59:50
3718
原创 Process.Start() 报错:系统找不到指定文件
今天在工作中遇到调用浏览器打开页面,代码报错:System.ComponentModel.Win32Exception:“系统找不到指定的文件。代码如下:这段代码,若不报错,有着苛刻的条件,如1.安装了chrome后,chrome自动或个人手动把chrome.exe的文件夹路径配置到环境变量Path里。如下:2.安装的chrome可能在System32文件夹内产生Chrome.exe这也就是,写了这样的代码有的机器能正常调出浏览器,有些则会报错的原因。经过多次尝试,我们使用Win+R运行Chro
2022-12-05 17:55:54
5257
原创 解决IDEA的插件中心连接不上网络
安装idea后,发现安装plugin插件,如汉化插件连接不上网络,解决方案如下。选择:设置按钮-HTTP代理设置。
2022-08-10 10:54:09
14016
2
原创 DevExpress GridControl 显示行号、设置行号宽
默认情况下,左边框的宽度是不够的,此时我们可以在设计模式搜索IndicatorWidth,把默认的-1改成我们想要的宽度如30即可。除了数据源第一列加个自定义rowNumber列外,我们可以把行号显示在列边框上,效果如下。...
2022-08-08 10:56:36
2727
2
原创 WCF配置文件详解
上篇文章主要讨论了WCF的基本内容,其中包括WCF的术语、创建方法及WCF在开发过程中使用的意义,它不仅能够提供程序之间的通信,而且还能提供程序和数据间的通信,WCF提供了多样化的程序之间的通信,不仅支持App的通信而且还支持web与应用程序之间的通信,可谓是功能强大。虽然上文讨论了WCF的基本使用方法,并做了很多Demo,但是都只是关于WCF的创建和调用的,今天来看看WCF的配置方法。上图整理了服务配置过程中所用到的基本的元素,大致的步骤主要是首先要在调用服务的程序集中添加服务的一个引用,然后添加一个s
2022-07-01 10:29:16
1555
原创 Visual Studio调试慢或运行慢的解决办法
1、VS2017调试慢自从换了新的笔记本,VS2017调试一直很慢,最近一句代码都要执行好几十秒钟,监视,鼠标放置看值,查找引用等,实在是慢的让人无法忍受,根本不能愉快的进行调试了。到网上搜索了一下,找到了办法如下。开始菜单-所有程序-Visual Studio 2017- VS 2017的开发人员命令提示符输入devenv.exe /resetuserdata命令回车执行即可,如下:注意,上述命令是将devnev.exe调起来,传递/resetuserdata命令参数,由devnev.exe
2022-05-21 18:26:04
13459
5
原创 线程间操作无效: 从不是创建控件的线程访问它。
private void button1_Click(object sender, EventArgs e) { //报错:从不是创建控件的线程访问它 Thread t = new Thread(() => { for (int i = 0; i < 100; i++) { this.label1.Text
2022-03-21 16:24:17
6492
原创 C#委托和事件框架封装简写 delegate、event、Action、EventHandler
曾经.Net大佬只有一个Delegete(委托),别人想用委托的时候,必须得用delegate关键字来定义一个委托,就像这样//定义一个无返回值的,带一个int参数的委托public delegate void myDelegate(int num);话说,委托生来是为了将方法也作为参数进行传递的。所以后来它学会了发布者/订阅者模式。比如:public myDelegate m_delegate;m_delegate += MyFun;public void MyFun(int num){ D
2022-03-18 20:13:15
2073
原创 DevExpress的DateEdit控件使用
常用代码如下 private void Form_Load(object sender, EventArgs e) { // 纯代码设置 // 设置带时间选择窗口 dateEdit2.Properties.VistaEditTime = DevExpress.Utils.DefaultBoolean.True; // 时间调整框格式 dateEdit2.Properties.VistaTi
2022-03-09 14:29:52
2133
原创 GridControl列自定义排序
使用Dev的gridControl的时候,控件会自带排序功能,十分方便,但是有时候我们需要更为复杂的自定义排序。如:1.通过一列的值去计算得出一个数或字符串,根据其排序。例:常见字符串序号1,02,20等,可以计算出一个新值,通过新值排序。2。某列根据字符串排序达不到我们的效果,可以通过其他列的值排序。例:年龄30岁,1岁2个月或者28天,此时我们可以通过出生日期排序。排序实现:1.给需要自定义排序的字段,设置SortMode为Custom2.新增事件/// <summary>
2022-02-18 17:46:24
2824
1
原创 正则表达式包含某字符串且不包含某些字符串
相对的包含某个单词(?=abcd)不包含某个单词,比如hello(?!abcd)不包含某些字符的正则如下 var $sz = /[#$@/\()<>{}[] ]/gi;//常见的特殊字符不够[]里面继续加不包含某些字符串的正则如下 ^((?!666|zzz|abc).)*$;//字符串按照要求换接着需要把上面的多个正则合并到一个如何合并多个正则可以用零宽断言来实现。例如:合并下列正则表达式:A. 必须包含数字的正则表达式 .\dB. 必须包含英文的正则表达式
2022-01-11 11:00:38
13057
原创 byte的取值范围-128~127原理
我们都知道byte为8位二进制数据,最高应该是11111111,为255(10进制)。但是为什么byte的取值范围为-128~127呢?因为不管是Int类型还是byte类型,当用二进制定义整数时候,其最高位是符号位。如此01111111代表byte范围正数的最大值127,11111111代表byte范围最小值-127才对。如此发现还是不对!经查资料得知,计算机内存是以二进制补码的形式保存所有的数据的。原码:直接将一个数值转换为二进制数。最高位是符号位。负数的反码:是对原码按位取反,只是最高位(符号位
2022-01-08 19:12:59
9552
9
原创 WCF实体相关错误:远程终结点不再能识别此序列。这很可能是由于远程终结点上发生中止
项目中,服务端获取数据填充List后,通过WCF传递到Business的Proxy.cs时报错如下:System.ServiceModel.CommunicationException:“远程终结点不再能识别此序列。这很可能是由于远程终结点上发生中止。WSRM:Identifier 的值不是已知的序列标识符。 可靠会话出错。”经查代码,发现服务端代码并无问题。而问题出现在实体类中。[Serializable][DataContract]public class PatientInfo{ [D
2022-01-05 16:28:44
1064
转载 oracle查询不走索引的一些情况(索引失效)
Oracle建立索引的目的是为了避免全表扫描,提高查询的效率。但是有些情况下,即使建立了索引,但是执行写出来的查询还是很慢,然后通过执行计划会发现是索引失效导致的(不走索引,走全表扫描)。所以需要了解一下有哪些些情况会导致索引失效,即查询不走索引的原因。在写SQL的层面上一些骚操作会导致索引失效没有写WHERE子句或查询条件没有建立索引既然没有WHERE子句,那么就是查询全部数据了,相当于全表扫描,当然不走索引了。而查询条件上没有建立索引的话,索引都没有还走个毛索引啊。WHERE子句上没有
2021-12-23 10:39:04
10827
1
原创 如何查看dll是32位还是64位
首先,我们在开始菜单的应用列表中找到Visual Studio的文件夹,打开其中的VS开发人员命令提示符。通过VS命令提示符中的CorFlags命令可以查看.NET版的dll的位数,查询命令是:corflags+dll的路径。在查询结果中如果32BITREQ的值为0表示dll是64位,1表示dll是32位。通过VS命令提示符中的dumpbin命令可以查看.net和非.net的dll的位数,查询命令是:dumpbin /headers C:\Temp\Oracle.DataAccess.dll。在查询结
2021-11-17 16:06:51
7874
原创 win10需要连接组织的激活服务器
新建txt文档,复制粘贴下面的语句到txt里,slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /skms kms.03k.org slmgr /ato重命名,修改扩展名为bat, 右键管理员启动. 激活成功
2021-10-30 10:39:00
4242
6
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅