![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
金增辉
脚踏实地从点滴做起,致力于自动化领域的控制技术及软件的研究;
展开
-
C#实现从Dictionary1赋值到 Dictionary2及List的使用
foreach(KeyValuePair<string,Class1> item in c1){ c2.Add(item.Key,item.Value);}原创 2022-05-07 17:32:43 · 1082 阅读 · 0 评论 -
C# DataGridView 刷新导致界面卡顿解决办法
C# DataGridView 刷新导致界面卡顿解决办法解决方案:利用反射设置DataGridView的双缓冲public MainForm1() { //设置窗体的双缓冲 this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint, true);原创 2022-05-07 14:31:10 · 4037 阅读 · 1 评论 -
C#:比较二个字符串,查找出相同字数和差异字符
C#:比较二个字符串,查找出相同字数和差异字符 /// <summary> /// 比较二个字符串,查找出相同字数和差异字符 /// </summary> /// <param name="s1"></param> /// <param name="s2"></param> /// <returns></returns&g原创 2022-03-30 12:46:15 · 2109 阅读 · 0 评论 -
Winform持续更新,留着自己看
Winform持续更新,留着自己看WinForm连续点击按钮只打开一次窗体三级目录WinForm连续点击按钮只打开一次窗体在C#中打开一个子窗口时,提示“被指定为此窗体的MdiParent 的窗体不是MdiContainer “此问题是由于父窗体的IsMdiContainer 属性设置为false导致的。将此属性设置为true,即可解决此问题。有两种方式设置窗体的IsMdiContainer 属性。解决方法:第一种,在父窗口的构造函数中添加this.IsMdiContainer = true原创 2022-02-25 10:01:24 · 577 阅读 · 0 评论 -
VBS打开BAT,隐藏显示CMD窗口
新建文档txt写入以下内容,另存为bat文件(lessonsoft是exe文件所在的文件夹名)@echo off@cd lessonsoft@BKVideo.exe在新建一个txt文件,输入以下内容,另存为VBS文件set ws=WScript.CreateObject("WScript.Shell")ws.Run "I:\\a.bat",0双击vbs文件即可运行...原创 2022-02-23 18:07:46 · 1246 阅读 · 0 评论 -
winform添加VideoMedia和PDF
一、添加PDF首先需要下载一个adobereader 安装在你的电脑上;工具——选择工具箱选项然后直接将你要显示的pdf文档路径传给这个控件即可<axAcroPDF1.LoadFile(“D:\xxx.pdf”);接下来有几个隐藏可以给说下:1)axAcroPDF1.setShowToolbar(false); //隐藏顶部的工具栏2)axAcroPDF1.setShowScrollbars(false);//隐藏下拉框3)至于左侧的工具栏,可以通过用别的控件将他遮盖的方式进行隐藏原创 2022-02-17 12:14:10 · 478 阅读 · 0 评论 -
C#操作Access数据库
C#操作Access数据库第一节 C#连接Access数据库第二节 C#读写Access数据库第三节 Dategridview显示与数据库同步2.三级目录第一节 C#连接Access数据库1.打开Microsoft Access1.新建窗体项目LinkAccess,在Form1_Load中添加如下代码 private void Form1_Load(object sender, EventArgs e) { //连接Access字符原创 2022-02-11 17:35:01 · 14353 阅读 · 0 评论 -
winform将子窗体添加到主窗体中
1.拖一个 Panel控件到主窗体左边,用于显示左侧菜单,命名为 panelLeftMenu。2.再拖一个 Button控件到 panelLeftMenu 中,保持默认名称 Button1,Text属性改成“显示子窗体”。3.拖一个 Panel控件到主窗体右边,命名为 PanelRightMain。4.新建一个子窗体,文件名为 SubForms.cs;为了便于看出效果,往子窗体中拖一个 Label 和 TextBox 控件。将窗体属性的formborderstyle设置成none5.双击 B原创 2022-02-08 10:02:02 · 2436 阅读 · 0 评论 -
C# DataGridview控件自动下拉到最后一行
有时候使用DataGridView难免会在最后插入一条数据,如果插入的数据超过滚动条显示的行数,那么默认情况下不会显示到最后一行。增加以下代码一直将滚动条拉倒最低。this.dataGridView1.FirstDisplayedScrollingRowIndex = this.dataGridView1.Rows.Count - 1;抄的...转载 2021-12-16 13:17:27 · 3476 阅读 · 1 评论 -
C#获取文件夹下的所有文件的文件名&&C#获取局域网内共享文件夹
String path = @"X:\xxx\xxx"; //第一种方法var files = Directory.GetFiles(path, "*.txt"); foreach (var file in files) Console.WriteLine(file); //第二种方法DirectoryInfo folder = new DirectoryInfo(path); foreach (FileInfo file in fo原创 2021-12-09 13:30:48 · 1405 阅读 · 0 评论 -
C# Winform ToolStripContainer ToolStrip使用
顶部有很多工具条,可以显示隐藏,也可以拖来拖去。这个在winform里面就是用ToolStripContainer实现的。toolStripContainer在上下左右各有一个ToolStripContentPanel ,可用于放置 ToolStrip, MenuStrip, 和 StatusStrip 控件。把几个ToolStrip放在左边或右边的ToolStripContentPanel ,会垂直显示。放在上边或下边的ToolStripContentPanel ,会水平显示。中间的ToolStri原创 2021-12-09 09:55:00 · 3190 阅读 · 0 评论 -
c#中让textbox选中不选中
将TextBox的TabStop属性设置为false;原创 2021-08-03 09:19:35 · 2433 阅读 · 0 评论 -
OpenCvSharp—图像分割
最简单的阈值分割即为手动设置阈值对图像进行二值化,大于设定的阈值像素值设置为255,小于设定阈值则为0.这种方法一般称为全局阈值分割。下面介绍的是一种局部阈值分割算法,其原理很简单,通俗地讲就是图片的每个局部都会通过处理得到一个阈值,这个区域就用这个阈值来进行分割,同理,每个区域都有不同的阈值来处理,如何来获取这个阈值就是整个算法的关键。本次介绍的分割方法如下:方法一:阈值分割Cv2.Threshold;(手动操作),程序参考上节的图像二值化。方法二:自适应阈值分割Sigma的一阶高斯滤波器原创 2021-07-08 15:38:23 · 1266 阅读 · 0 评论 -
自制C#编译器
源代码下载链接:这里是引用运行结果:一、CSharpCodeProvider 提供对C#代码生成器和代码编译器的实例的访问。如果要动态生成VB代码,可以使用VBCodeProvider。CreateCompiler():获取编译器的实例。二、ICodeCompiler 定义用于调用源代码编译的接口或使用指定编译器的CodeDOM树。每种编译方法都接受指示编译器的CompilerParameters对象,并返回指示编译结果的CompilerResults对象。CompilerA原创 2021-07-07 14:02:27 · 2564 阅读 · 1 评论 -
C# AboutBox怎么显示自己定义的界面
C# AboutBox怎么显示自己定义的界面项目-> 属性-> 应用程序-> 程序集信息在这里修改后再运行就好了。原创 2021-03-16 13:45:14 · 933 阅读 · 0 评论 -
对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们
托管调试助手“CallbackOnCollectedDelegate”在“D:\XXX\XXX.vshost.exe”中检测到问题。其他信息: 对“XXX+HookProc::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。重点:经过搜索资料,发现出问题的原因是我的程序里回调函数作用域的问题解决办法:在方法外部进行,委托的声明即可static DLLOPCServer原创 2021-03-02 13:57:12 · 884 阅读 · 0 评论 -
DateGridView首列排序
第一步:初始化的时候,新建固定行数的表格 private void Form1_Load(object sender, EventArgs e) { int index = 0; for (int i=1;i<=12;i++) { index = this.dataGridView1.Rows.Add();原创 2021-02-05 13:47:09 · 160 阅读 · 0 评论 -
C#的DataGridView中字体大小
C#的DataGridView中字体大小的方法:dataGridView1.RowsDefaultCellStyle.Font = new Font("宋体", 11, FontStyle.Regular);原创 2021-02-03 15:16:18 · 6059 阅读 · 0 评论 -
C# 让鼠标停在按钮上面出现悬浮字
为窗体添加一个ToolTip控件,命名为toolTip1。在Button的MouseEnter事件中加入以下代码,实现使用ToolTip显示悬浮字: private void btnSave_MouseEnter(object sender, EventArgs e) { toolTip1.Show("保存", (Button)sender); }...原创 2021-02-02 17:09:44 · 2680 阅读 · 1 评论 -
获取程序当前运行的文件夹路径“Application.StartupPath”,在类库项目中无法使用的解决方案
通常我们WinForm编程时,要获取程序当前运行的文件夹路径会用Application.StartupPath ,但是Application.StartupPath在编写类库项目时却无法使用,因为我们根本无法用using System.Windows.Forms;来引入Application.StartupPath 的命名空间,这个时侯我们要用AppDomain.CurrentDomain.BaseDirectory。private static string fullPathFileName = App原创 2021-01-26 09:28:07 · 4364 阅读 · 0 评论 -
MarshalAs(UnmanagedType···特性是干啥的
[MarshalAs(UnmanagedType.啥啥啥)]是提供向非托管代码封送数据时的规则。MSDN上讲的MSDN上的说明:(此处不要怀疑Attribute可以省略的)https://docs.microsoft.com/zh-cn/dotnet/api/system.runtime.interopservices.marshalasattribute.-ctor?view=net-5.0具体举例说明:比如String或StringBuilder型,传递给非托管代码的时候可能是LPStr原创 2020-11-19 17:30:40 · 4732 阅读 · 0 评论