
C#
Arno0377
C++/C# 工控开发
展开
-
Enterprise Architect 类关系对应解析
Enterprise Architect 类关系翻译解析转载 2022-09-07 09:37:39 · 664 阅读 · 1 评论 -
WPF 中 点击ListBox中的元素自动选中一整项方法
wpf listbox 点击控件无法选中问题原创 2022-07-11 19:15:35 · 1299 阅读 · 0 评论 -
WPF 设置无边框窗体后任务栏被覆盖问题解决办法
1、窗体设置WindowStyle="None"ResizeMode="CanMinimize" //这个如果不设置,窗体可能占不满2、窗体大小设置在构造函数中设置窗体大小this.Width=SystemParameters.WorkArea.Width;this.Height=SystemParameters.WorkArea.Height;this.Left=0;this.Top=0;this.WindowState=WindowState.Normal;...原创 2022-05-14 10:05:45 · 781 阅读 · 0 评论 -
Winform TableLayoutPanel设置行 AutoSize 不会自动填补剩余空白的问题
TableLayoutPanel 不会自动占满窗体问题原创 2021-12-09 09:27:21 · 1081 阅读 · 0 评论 -
visual studio C#工程设置obj文件目录
C# obj 路径原创 2021-12-03 08:58:34 · 2051 阅读 · 0 评论 -
C#变量内存拷贝
C# short类型数据拷贝给ushort类型方法1:转成bytes数组后再转换过去 short bbb = -1000; ushort ccc = 0; byte[] srcbyte = BitConverter.GetBytes(bbb); ccc=BitConverter.ToUInt16(srcbyte,0);方法2:直接非托管内存拷贝 ushort[] srcbyte2=new ush原创 2021-04-22 16:08:10 · 1005 阅读 · 0 评论 -
CefSharp.Wpf 屏蔽右键弹出菜单
我当前使用的版本是87.1.132.0创建一个新的C# 类 实现 IContextMenuHandler 菜单接口public class MenuHandler : IContextMenuHandler { void CefSharp.IContextMenuHandler.OnBeforeContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame fr原创 2021-03-05 10:58:50 · 661 阅读 · 1 评论 -
C# sqlite 查询数据库表中所有字段
public bool ReadTableFields(string strTableName,out List<string> strFieldNames) { // 获取表中的所有字段名 string sqlfieldName = "Pragma Table_Info(" + strTableName + ")"; // 创建命令对象 SQLiteCommand cmd = ..原创 2021-01-13 17:26:24 · 1976 阅读 · 0 评论 -
GetPrivateProfileString C# 读取中文乱码问题
1、ini文件要设置成unicode编码格式。win10中记事本已经没有了unicode选项用UTF-16 LE替代。2、Windows 10版本1903更新后,记事本的几种编码模式改了名称:旧版的“Unicode”相当于新版的“UTF-16 LE”(这是题主找不到“Unicode”选项的原因);旧版的“Unicode big endian”相当于新版的“UTF-16 BE”;旧版的“UTF-8”相当于新版的“带有BOM的UTF-8”(而新版的“UTF-8”实质上是“不带BOM的UTF-8”)...原创 2020-12-28 17:29:55 · 3860 阅读 · 0 评论 -
C# 好用的代码编辑控件
https://github.com/arnoxinglei/SharpDevelop原创 2020-10-20 17:45:45 · 1555 阅读 · 0 评论 -
wpf 窗体双击放大和缩小
给窗体鼠标按下事件绑定处理方法 this.MouseDown += MainWindow_MouseDown;在鼠标按下事件处理方法中实现拖拽和放大缩小private void MainWindow_MouseDown(object sender, MouseButtonEventArgs e){ // 按下拖动 if (e.LeftButton == MouseButtonState.Pressed) { this.DragMove(); }原创 2020-10-20 16:12:53 · 988 阅读 · 0 评论 -
C# 托管内存与非托管内存之间的转换
C# 托管内存与非托管内存之间的转换c#有自己的内存回收机制,所以在c#中我们可以只new,不用关心怎样delete,c#使用gc来清理内存,这部分内存就是managed memory,大部分时候我们工作于c#环境中,都是在使用托管内存,然而c#毕竟运行在c++之上,有的时候,(比如可能我们需要引入一些第三方的c++或native代码的库,在Unity3d开发中很常见)我们需要直接在c#中操纵非托管的代码,这些non-managed memory我们就需要自己去处理他们的申请和释放了, c# 中提供了一些原创 2020-09-25 14:17:42 · 779 阅读 · 0 评论 -
C# Marshal的使用
IntPtr ptr = Marshal.AllocHGlobal(704* 576 * 3);如果没有手动释放内存,会有内存溢出;发生OutOfMemoryException 没有足够的内存继续执行程序时引发的异常。调用Marshal.AllocHGlobal必须调用 Marshal.FreeHGlobal(ptr);来手动释放内存,即使调用GC.Collect();方法也无法释放。...原创 2020-09-25 14:09:56 · 1697 阅读 · 0 评论 -
Visual studio 中的Targets文件
1、工程中没有一个C#文件2、工程同目录下有Targets文件夹3、target文件中存储了要编译的文件名称原创 2020-07-14 11:38:50 · 1481 阅读 · 0 评论 -
String^与string的相互转换
采用了c++调用c#dll的方法,在.net中string是需要用gcnew进行初始化,先来看看gcnew和普通的new的区别:C++/CLI中使用gcnew关键字表示在托管堆上分配内存,并且为了与以前的指针区分,用^来替换* ,就语义上来说他们的区别大致如下:1. gcnew返回的是一个句柄(Handle),而new返回的是实际的内存地址. 2. gcnew创建的对象由虚拟机托管,而new创建的对象必须自己来管理和释放.暂时没有很深入的去理解这些区别。因为需要在c++的控制代码中原创 2020-07-03 10:07:56 · 2464 阅读 · 0 评论 -
C# 中intptr用法
一:什么是IntPtr先来看看MSDN上说的:用于表示指针或句柄的平台特定类型。这个其实说出了这样两个事实,IntPtr 可以用来表示指针或句柄、它是一个平台特定类型。对于它的解释,这个哥们写的比较好:It’s a class that wraps a pointer that is used when calling Windows API functions. The underlying pointer may be 32 bit or 64 bit, depending on the platfo原创 2020-06-20 09:44:27 · 7408 阅读 · 0 评论 -
WPF 限制鼠标的移动范围
public struct RECT { public int Left; public int Top; public int Right; public int Bottom; public RECT(Int32 left, Int32 top, Int32 right, Int32 bottom) { Left = left; Top = top;转载 2020-06-10 13:42:09 · 677 阅读 · 0 评论 -
继续聊WPF——Thumb控件
这个控件,真不好介绍,MSDN上也是草草几句,反正就是可以让用户拖动的玩意儿,但是,你会发现,当你在该控件上拖动时,它没有反响,也就是说这个东西默认不做任何操作的,它是赖在那里什么都不干,除非你去踢上脚。而且,这个控件就像一个四方鸭,你踢一脚它就前进一步,你不踢,它又在那里尸位素餐,什么都不干了。还是用一个例子来说明吧,不过,还是先说一下重要的东西。Thumb有几个核心事件,都是与拖动有关。往深一层想,它是什么?对,就是我们常见的滚动条里面的滑块,就是我们在网格里面可以拖动的分隔线,就是窗口右下角用转载 2020-06-09 23:13:57 · 940 阅读 · 0 评论 -
WPF中重叠控件的鼠标穿透点击
Problem:有控件A和控件B,位置完全重叠,B覆盖在A上方。换句话说,B只是A的修饰(实现中经常有可能会碰到这样的情况,比如B可能是一个png图片,你又不想重写A的模板),我们需要在鼠标操作时透过B直接点击到A。Solution:你可能会想让B的鼠标事件不执行(e.handle=false)。但事实上这样只能把鼠标事件路由到B的父控件,而不会让并列的A控件有反应。其实WPF中这样的实现很简单:将B控件的HitTest属性做修改:IsHitTestVisible=“False”。...原创 2020-06-09 16:39:33 · 678 阅读 · 0 评论 -
WPF窗体绘制网格线
新的软件要绘制网格,像VISIO一样的底纹便于绘图时对齐,在WinForm下,在Paint事件中通过计算通过Graphics在画布上一条线一条线地画就行了,显然会慢点,而且代码比较多。在WPF中,可以更简单,通过绘制适量直线不会方便而且可以提高性能,可以创建一个Group,然后将所有的直线添加到该组,然后通过RenderTransform或LayoutTransform根据缩放比例进行缩放即可;还有一种更简单的方法就是使用ImageBrush.例:private DrawingBrush _gridBr转载 2020-06-08 13:59:58 · 1116 阅读 · 1 评论 -
WPF应用在系统托盘显示图标
上次做wpf时想把程序运行的图标显示在任务栏,结果发现wpf的系统托盘和winform的不一样,以前的方法不管用了。网上搜的好多都是winform的资料,wpf的很少。最后我把我现在做好的整理分享下,方便别人,也方便自己。文章难免有些错误,欢迎指正,下面代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Windows;using System.Windows.Inp转载 2020-06-08 09:59:37 · 2526 阅读 · 1 评论 -
C#中属性和字段的区别
属性和字段的区别在C#中,我们可以非常自由的、毫无限制的访问公有字段,但在一些场合中,我们可能希望限制只能给字段赋于某个范围的值、或是要求字段只能读或只能写,或是在改变字段时能改变对象的其他一些状态,这些单靠字段是无法做到的,于是就有了属性,属性中包含两个块:set和get,set块负责属性的写入工作,get块负责属性的读取工作。在两个块中都可以做一些其他操作,如在set中验证赋的值是否符合要求并决定是否进行赋值。当缺少其中一块时属性就只能读或只能写,set和get块中属性必需有一个,因为即不原创 2020-06-01 11:24:21 · 794 阅读 · 0 评论 -
WPF 指定itemscontrol数据样式
1、样式文件<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:UI_Vision"> <Style TargetTy原创 2020-05-30 15:39:11 · 1080 阅读 · 0 评论 -
CLR C++与C#之间类型转换
C++类型C#类型备注说明IntInt16、Int32没有悬念,直接转化UintUInt16、Uint32、int在程序中,不太清楚是,就可以直接对应为intLongInt32Long相对int就定型了,对应的就是Int32DWORD(unsigned long)Uint32WORD(unsigned short)Uint16这是对...转载 2020-04-24 17:37:18 · 4478 阅读 · 0 评论 -
C# 访问C++代码内存区域
C++在方法返回这一数组的指针(IntPtr:pByte)和数组的长度(uint:len)就可以读取这个内存了。bytes = new byte[len]; Marshal.Copy(pByte, bytes, 0,(int)len);原创 2020-04-13 18:18:12 · 300 阅读 · 0 评论 -
WPF圆形按钮样式
1、创建Style.xaml样式文件<!--圆形按钮 by arno--> <Style x:Key="RoundedButton" TargetType="Button"> <Setter Property="Template"> <Setter.Value> ...原创 2020-04-10 09:31:38 · 988 阅读 · 0 评论 -
WPF去除按钮悬停效果
如果你想在应用程序的所有按钮将此风格,那么这种风格可以插入Application.Resources部分的App.xaml页面。 <Window.Resources> <Style x:Key="MyButton" TargetType="Button"> <Setter Property="OverridesDefaultStyle" Va...原创 2020-03-21 15:35:28 · 1142 阅读 · 0 评论 -
WPF:使用应用程序范围的资源字典
WPF:使用应用程序范围的资源字典本示例显示如何定义和使用应用程序范围的自定义资源字典。示例Application 公开共享资源的应用程序范围存储: Resources。 默认情况下,使用 ResourceDictionary 类型的实例初始化 Resources 属性。 使用 Resources获取和设置应用程序范围的属性时,可以使用此实例。 有关详细信息,请参阅如何:获取和设置应用程序范...原创 2020-02-18 15:58:07 · 246 阅读 · 0 评论 -
WPF窗口设置使用显卡
很少人会知道 WPF 也可以知道当前的显卡能支持的渲染级别。 根据显卡的不同,包括显存、纹理等的支持是否打到要求,指定渲染级别。使用 System.Windows.Media.RenderCapability 可以拿到 WPF 的渲染级别 var renderingTier = System.Windows.Media.RenderCapability.Tier >...原创 2019-12-28 17:26:19 · 1509 阅读 · 0 评论 -
WPF 屏蔽系统热键
private struct KBDLLHOOKSTRUCT { public int vkCode; int scanCode; public int flags; int time; int dwExtraInfo; } ...原创 2019-12-18 14:28:05 · 879 阅读 · 0 评论 -
WPF禁止窗口缩放和移动
1、xaml中设置窗口不能改变大小, ResizeMode=“NoResize”。虽然设置不能改变大小,但是双击窗口标题窗口仍然会变小;窗口标题点击左键移动鼠标,窗口也会进行缩放。2、需要拦截WPF窗口的双击事件、移动事件//窗口初始化后指定钩子函数ntPtr hwnd = new WindowInteropHelper(this).Handle;HwndSource.FromHwnd(...原创 2019-12-18 13:48:03 · 7028 阅读 · 0 评论 -
C++ 回调C#界面
C++调用C# 需要三步:1、定义函数指针 2、C#委托转换成函数指针 3、C#层指定要回调的委托注意事项:委托对象一定要是持久型对象,不然委托对象被C#回收后,C++再调用委托对象会出现崩溃。1、定义函数指针 typedef void(CALLBACK* pEventCallBack)(int nEvent);定义函数指针对象class testCpp{ public: v...原创 2019-12-04 19:09:13 · 872 阅读 · 0 评论 -
C++调用C#注册的回调函数
本文主要讲解C#注册回调函数提供给C++调用,用于异步通知机制。这在编程过程中是经常需要用到的模式。此过程需要创建三个工程:C++动态库工程C++ CLR 托管动态库工程C# 测试工程接着前文C++封装成托管模式供C#调用过程创建的C++ CLR托管工程,在此基础上再创建一个C++动态库工程,此工程创建过程比较简单在此不再详细说明,只注意一点如图。一、C++动态库工程工程结构图...转载 2019-12-04 09:28:23 · 887 阅读 · 0 评论 -
Wpf调用托管C++出现System.IO.IOException问题
Wpf调用托管C++出现System.IO.IOException问题问题:调试窗口一直出现:“System.IO.IOException”类型的未经处理的异常出现在 System.dll 中。解决方法:出现异常,但是又查找不到崩溃的地方。打开调试-常规 勾选下面的选项,当异常发生时就会中断程序并定位到异常地方。...原创 2019-12-02 23:21:02 · 893 阅读 · 0 评论 -
C# DllImport用法
DllImportAttribute 类作用:指示该属性化方法由非托管动态链接库 (DLL) 作为静态入口点公开。命名空间:System.Runtime.InteropServices程序集:System.Runtime.InteropServices.dll, mscorlib.dll, netstandard.dll下面的代码示例演示如何使用DllImportAttribute属性...原创 2019-11-14 18:07:40 · 640 阅读 · 0 评论 -
正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码
正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码解决方法调用托管“entrypoint”: 托管代码可能未运行在加载程序锁下,包括 DLL 入口点和从 DLL 入口点访问到的调用编译器找到编译为 MSIL 的(可能)DLL 入口点。 由于加载入口点已编译为 MSIL 的 DLL 时存在一些潜在问题,因此强烈建议不要将 DLL 入口点函数编译...原创 2019-11-06 09:57:41 · 2683 阅读 · 0 评论 -
WPF拦截系统关机消息
1、app.xaml中设置要在App.xaml中添加 SessionEnding的响应事件。代码如下所示<Application x:Class="YC3000.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://s...原创 2019-08-07 15:53:55 · 653 阅读 · 0 评论 -
WPF在XAML中利用绝对路径和相对路径
WPF引入了统一资源标识Uri(Unified Resource Identifier)来标识和访问资源。其中较为常见的情况是用Uri加载图像。Uri表达式的一般形式为:协议+授权+路径协议:pack://授权:有两种。一种用于访问编译时已经知道的文件,用application:///。一种用于访问编译时不知道、运行时才知道的文件,用siteoforigin:///。在这里加图片时,我们选用...原创 2019-08-09 15:19:38 · 1808 阅读 · 0 评论