C#
努力的菇凉
这个作者很懒,什么都没留下…
展开
-
C#中操作图片出现资源被占用
C#中操作图片出现资源被占用用Image.FromFile读取图片后对图片进行其他操作时会出现IOException:“文件正由另一进程使用,因此该进程无法访问此文件”,可使用文件流读取图片解决该异常。 程序示例如下: 用VS2012新建一个winform程序,名为WindowsFormsApplication2,实现的功能为点击按钮,将指定路径下的bmp图片转换为jpg图片保存到相同路径下,保原创 2017-08-07 21:26:47 · 3757 阅读 · 0 评论 -
将十进制数转换为十六进制数
C++版:int DectoHex(int dec, unsigned char *hex, int length) { int i; for (i = length - 1; i >= 0; i--) { hex[i] = (dec % 256) & 0xFF; dec /= 256; } return 0;}测试,输入:...原创 2017-11-24 15:20:57 · 1455 阅读 · 0 评论 -
整数转十六进制,将16进制字符串低位字节补零
//整数转十六进制 public byte[] tenTo16(int str) { string hex = Convert.ToString(str, 16); byte[] hexinfo = new byte[2]; string[] s = new string[2]...原创 2018-02-13 11:16:11 · 4465 阅读 · 0 评论 -
创建日志文件写日志
//写日志public static void WriteLog(string Msg){ string sDirPath = ".\\log\\"; CreateDir(sDirPath); string sFilePath = sDirPath + DateTime.Now.ToString("yyyy-MM-dd") + ".log"; try {...原创 2018-02-13 11:20:18 · 1047 阅读 · 0 评论 -
判断字符是数字还是字母
private string UrlEncode(string src){ Regex ex = new Regex("^[0-9a-zA-Z]+$"); for (int i = 0; i < src.Length; ++i) { char cc = src[i]; if (ex.IsMatch(cc.ToString())) //如果是数字或字母 {...原创 2018-02-13 11:21:54 · 913 阅读 · 0 评论 -
去掉字符串中的字符'\0';得到文件名称
temp.Trim("\0".ToCharArray()); //去掉字符串中的字符'\0',temp为字符串//得到文件名称 public string getName(string FullPath) { string[] tempTxtScreenicPath = imgFullPath.Split('\\'); string txtPicPath = tempT...原创 2018-02-13 11:25:36 · 1255 阅读 · 0 评论 -
C++动态库调试打断点无效,提示信息:当前不会命中断点,还没有为该文档加载任何符号
在对C#调用的C++动态库打断点进行调试时,断点变为黄色感叹号,未进入断点,反复查找原因,重新生成的dll文件已经拷贝到C#相关目录下面,但还是无法进入断点,后来发现重新生成的动态库的pdb文件没有拷贝到C#相关目录下面,对动态库进行清理,重新生成解决方案,然后将新生成的dll和pdb同时拷贝到C#相关目录下,调试动态库,断点生效,问题解决。...原创 2018-03-20 10:13:00 · 3149 阅读 · 1 评论 -
找出数组中不同元素并统计相同元素的个数
public void getDifference(int[] arr) { Dictionary<int, int> dic= new Dictionary<int, int>(); foreach (int val in arr) { ...原创 2018-06-01 10:51:46 · 7656 阅读 · 1 评论 -
计算两个时间之间的毫秒差
DateTime start=DateTime.Now;DateTime end=DateTime.Now;TimeSpan ts=end-start;ts.TotalMilliseconds.ToString();原创 2018-06-19 16:56:47 · 5333 阅读 · 0 评论 -
WinForm使软件界面最大化并禁止拖拽变形
this.WindowState = FormWindowState.Maximized; //窗口最大化//重写主窗体的系统事件函数,在该函数中加入如下代码即可实现禁止鼠标拖拽界面事件 protected override void WndProc(ref Message m)//禁止窗口拖拽 { if (m.Msg == WM_SYSCOMMAND) { if (m...原创 2018-07-06 19:24:28 · 1534 阅读 · 0 评论 -
打开串口发送、接收数据
private SerialPort LEDPt = new SerialPort();if (!LEDPt.IsOpen){ LEDPt.PortName = SysConfig.comNum; //设置端口号 LEDPt.BaudRate = int.Parse(SysConfig.btl); //设置波特率 LEDPt.Open(); //打开串...原创 2018-07-06 19:27:17 · 602 阅读 · 0 评论 -
捕捉异常记录错误日志
public void errorLog(){ try { } catch (Exception ex) { var strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now + "\r\n"; var str = string.Format(strDateInfo + "异常类型:{0}\...原创 2018-07-06 19:29:20 · 1383 阅读 · 0 评论 -
定义并使用委托
定义一个类 DelegateState public delegate void TextBoxdelegate(string msg); //TextBox消息提示框 public static TextBoxdelegate DelegateTextBox; 定义另一个类 MainForm ...原创 2018-07-06 19:31:37 · 150 阅读 · 0 评论 -
关闭exe后,查看资源管理器,后台相应程序仍在运行
关闭exe后,后台相应程序仍在运行原因:有线程没退出.解决:设置线程t的IsBackground属性为True,t.IsBackgroud = true;一个线程或者是后台线程或者是前台线程。后台线程与前台线程类似,区别是后台线程不会防止进程终止。属于某个进程的所有前台线程都终止后,公共语言运行库就会结束该进程。所有剩余的后台线程都会停止且不会完成。...原创 2018-07-06 19:33:28 · 1942 阅读 · 0 评论 -
遍历文件夹下的文件夹和子文件,遍历文件夹删除文件夹及其下面的所有子文件
string path ="";FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();if(folderBrowserDialog.ShowDialog() == DialogResult.OK){ path = folderBrowserDialog.SelectedPath; //选择文件夹}if(原创 2017-11-24 14:08:58 · 512 阅读 · 0 评论 -
C#调用C++动态库如何接收C++数据类型为char*
1、托管类型和非托管类型区别 托管: 指内存管理由系统而不是程序员管理,.net,C#等(自动垃圾回收机制) 非托管:内存由程序员手动释放,C++ 严格意义来说,没有非托管C++,托管只是一种对C++的扩展,如C++/CLI,使用别的办法也可由系统管理内存。 托管代码:由CLR(公共语言运行库)执行的代码,CLR服务如:自动垃圾回收、运行库类型检测、安全支持等。 非托管代码:由操作系统直接原创 2017-11-24 15:05:21 · 4327 阅读 · 0 评论 -
C#中如何使用水晶报表
**C#中如何使用水晶报表** VS2010和VS2012需要安装SAP的组件才能使用水晶报表,SAP组件下载链接(网友杨明波提供)http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_13_0_5.exe 组件下载好之后进行安装,安装好之后打开VS2012/2010,新建一个winform窗口程序,示例如下: 点击视图–原创 2017-08-09 21:55:12 · 7681 阅读 · 0 评论 -
C#对图片进行缩放变换
C#对图片进行缩放变换using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Drawing.Imaging;using System.Linq;using System.Text;usin原创 2017-09-13 14:22:30 · 4964 阅读 · 1 评论 -
C#+VS2012图片二进制流与数据库MySql、水晶报表间的操作(二)
读取本地图片,将图片以二进制流的形式存储到数据库中1、成功访问到数据库; 2、设计Form1界面,从工具箱中添加一个按钮button1和一个画板panel1; 3、从本地读取图片的二进制流; 编写函数如下:public byte[] imageBinary(string imagePath){ FileStream fs = new FileStream(imagePath, FileM原创 2017-09-01 22:20:18 · 643 阅读 · 0 评论 -
C#读取txt文本内容行数
C#读取txt文本内容行数代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO;namespace ReadTxtLines{ class Program {原创 2017-09-10 20:36:38 · 13007 阅读 · 1 评论 -
C#如何编写程序运行exe可执行文件
C#如何编写程序运行exe可执行文件点击按钮,实现功能:打开选择文件对话框,只能选择后缀为.exe的文件,选中后打开运行即可。 代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.原创 2017-09-10 20:49:39 · 9093 阅读 · 0 评论 -
C#+VS2012图片二进制流与数据库MySql、水晶报表间的操作(一)
连接数据库1、新建winform窗口程序,工程名为ImageSqlTest; 2、添加引用MySql.Data; 3、编写函数。 在本地MySql中新建一个数据库,名为test,Mysql登录名为root,密码为123456; 函数代码如下: MySqlConnection conn = new MySqlConnection(); string connString = "Server原创 2017-09-01 21:37:58 · 270 阅读 · 0 评论 -
C#+VS2012图片二进制流与数据库MySql、水晶报表间的操作(三)
从数据库中取出图片二进制流,显示到水晶报表中mark:关于VS2012(2010)水晶报表的使用可阅读我写的这篇文章:C#中如何使用水晶报表http://blog.csdn.net/qq_22889875/article/details/77017551 阅读了前面的(一)(二)文章,相信都学会了如何将图片二进制流保存到数据库中,现在来学习下如何从数据库中读取二进制流,并将图片成功显示到水晶报表中原创 2017-09-01 22:32:22 · 1226 阅读 · 0 评论 -
C#接收C++动态库返回字符串char*,在C#端如何接收并得到正确的字符串
最近调用动态库传数据,发现C#接收C++动态库返回字符串char*,在C#端设置对应类型为string无法接收到正确值,最后想到在C#端先用字节数组接收返回的字符串,然后再将字节数组转换为对应的字符串,数据接收终于正确 首先打开VS2012,新建项目->Visual C++,选择Win32项目,如图选择dll 新建项目的名字为dlltest,新建头文件dlltest.h,在源文件dlltes原创 2017-11-29 21:32:55 · 19077 阅读 · 5 评论 -
C#判断操作系统类型
C#判断操作系统类型 //获取系统信息 System.OperatingSystem osInfo = System.Environment.OSVersion; //获取操作系统ID System.PlatformID platformID = osInfo.Platform; //获取主版本号 int versionMajor = osInfo.Version.Major; //原创 2017-11-24 13:42:19 · 1125 阅读 · 0 评论 -
将数据分批保存到不同文件夹下
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;namespace test{ class Program { static void Main(string[] args) { for (int count = 0;原创 2017-11-24 14:39:09 · 730 阅读 · 0 评论 -
复制拼接数组,取数组指定部分
1、Skip(),Take()该方法速度比较慢,在循环中使用效率低int bt[10] = {1,2,3,4,5,6,7,8,9,0};int[] arr= bt.Skip(2).Take(3).ToArray(); //取数组bt指定索引(2)后指定个数(3)(包括索引)的元素,即取第3个到第6个元素值数组arr ={3,4,5} 2、Array.Copy() 在循环中使用效率高int[] a原创 2017-11-24 14:03:31 · 580 阅读 · 0 评论 -
字符串转换为字符串数组和字节数组,字符串数组转换为字节数组
//字符串转换为字符串数组string str= "A B C D E F"; //可根据字符串特点,用SPlit方法进行分割string[] attr= str.Split(' '); //attr={"A","B","C","D","E","F"}//字符串转换为字节数组string Msg = "你好123";byte[] msg = Encoding.Default.GetByte原创 2017-11-24 14:55:54 · 5415 阅读 · 0 评论 -
C#开启关闭串口,发送数据
using System.IO.Ports;private SerialPort LEDPt = new SerialPort();byte[] sendByte = new byte[sendLength];Array.Copy(by1, 0, sendByte, 0, count1);Array.Copy(msg, 0, sendByte, count1, msg.Length);Arr原创 2017-11-24 15:00:32 · 2142 阅读 · 0 评论 -
设定时间段
DateTime dn = DateTime.Now; DateTime d1 = DateTime.Parse(DateTime.Now.ToShortDateString() + " 6:15:00"); DateTime d2 = DateTime.Parse(DateTime.Now.ToShortDateString() + " 19:20:00"); if (dn > d...原创 2018-07-06 19:35:31 · 338 阅读 · 0 评论