c#技术
new_smile
这个作者很懒,什么都没留下…
展开
-
.net 单元测试
如果要进行.net 提供的单元测试以外的测试框架进行单元测试,1.我们得安装一个TestDriven.Net的这样一个插件。2.我们得安装测试框架比如nUint的“NUnit-2.6.2.msi”。3.我们得有要是用的测试框架的dll,比如nUnit.framework.dll.等等。然后才能够在类库项目中做单元测试。如果没有安装TestDriven.Net就会报:“A project w原创 2013-03-25 09:56:34 · 715 阅读 · 0 评论 -
保存文件打开文件对话框
WPF中文件浏览对话框的实现可以利用Windows API Code Pack,它是一个用于访问Windows Vista/7 特性的托管代码函数库,但并没有包含在.NET 4.0中。该代码包的特性如下所示:支持Windows Shell命名空间对象,包括新的Windows 7资源库(Libraries)、固定名称文件夹和非文件系统容器。Windows Vista和Window转载 2016-06-24 16:05:46 · 1142 阅读 · 0 评论 -
vs2015 自定义类模板的方法
第一步:找到模板文件路径:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplates\CSharp\Code\2052\Class文件名:Class.cs 第二步:将模板文件拷贝到桌面因为模板文件是只读的,不能直接对它进行直接修改。 第三步:修改模板文件如下:转载 2016-08-04 11:05:46 · 4764 阅读 · 1 评论 -
调用windows系统语音
win7,win10兼容模式调用系统语音原创 2016-09-27 16:10:36 · 1362 阅读 · 0 评论 -
C#中事件的继承
C#中的子类无法调用父类的事件,可以通过在父类中创建一个方法来调用父类的事件,而子类通过调用父类的方法来触发事件。class parent{ protected string name; public event Handle OnEvent; protected SendEvent(HandleArgs args) { if (OnEvent != null转载 2016-11-16 14:28:53 · 903 阅读 · 0 评论 -
C#的async和await
C# 5.0中引入了async 和 await。这两个关键字可以让你更方便的写出异步代码。看个例子:[csharp] view plain copyprint?public class MyClass { public MyClass() { DisplayValue(); //这里不会阻塞转载 2016-11-15 15:42:28 · 347 阅读 · 0 评论 -
wpf 制作带小箭头的框框
这是我做的带尖尖的Border元素,可以等比例调节大小,有兴趣的可以自己看看原创 2017-04-07 16:51:59 · 3186 阅读 · 0 评论 -
wpf Tooltip样式
分享官方的tooltip改编的样式,同志们需要的可以使用,修改哈原创 2017-04-07 17:07:39 · 3225 阅读 · 0 评论 -
c#路由事件
public static readonly DependencyProperty PageIndexProperty = DependencyProperty.Register("PageIndex", typeof(int), typeof(MoonPdfPanel), new UIPropertyMetadata(1)); public int PageIndex{ g转载 2017-06-14 09:40:48 · 1688 阅读 · 0 评论 -
lisbox显示为表格样式
绑定到自身,设置转换器,设置borderThickness<Setter Property="BorderThickness" Value="{Binding RelativeSource={RelativeSource Self},Converter={StaticResource ListBoxTableBorderConverter}}"/>public object Conve...原创 2018-05-28 17:52:07 · 1099 阅读 · 0 评论 -
C#调用windowsAPI打开路径选择对话框
首先要使用到的两个dll为:Microsoft.WindowsAPICodePack.dll与Microsoft.WindowsAPICodePack.Shell.dll使用时调用ShellContainer selectedFolder = null; selectedFolder = KnownFolders.Computer as ShellContainer; ...原创 2018-07-04 09:56:56 · 1617 阅读 · 0 评论 -
WPF:在异步操作中使用CommandManager手动更新Command执行状态(转载)
WPF判断命令(Command)是否能够执行是通过ICommand.CanExecute事件,在实际程序中路由命令一般是通过CommandBinding来使命令得到实际操作代码,但是这个CanExecute事件的调用是由WPF控制的,有些时候,比如命令执行后进行一些异步耗时操作,操作完成后会影响CanExecute事件结果,但是WPF不会立即做出反应,那么这个时侯就需要手动调用CommandMan...转载 2018-10-30 11:20:04 · 1128 阅读 · 0 评论 -
WPF listBox 显示每个Item的index值
在显示出来的Item中显示出当前Item的index值Xaml文件如下: <Window.Resources> <Style x:Key="wrapalListBox" TargetType="ListBox"> <Setter Property="Template"> &转载 2018-11-07 15:57:46 · 3332 阅读 · 1 评论 -
c# 对象事件不能即使释放问题
在实际应用中,由于c#的垃圾自动回收机制,我们不用去管对象释放,当对象不再使用了之后,这个对象并没有马上释放,它的对象中订阅的事件尽然还在起作用。如果再次新建对象,使用对象订阅的事件的时候,就会出现事件重复订阅,即使使用对象先取消订阅,再添加订阅也没有用。event-=eventHandler,然后event+=eventHandler。即使这样eventHandler还是会被调用两次。...原创 2018-12-24 21:03:29 · 1331 阅读 · 2 评论 -
C#调用C++的DLL搜集整理的所有数据类型转换方式
搜集整理的代码会是很不错的文章,花了一天时间,搜索到最后居然出来一篇叫做"C# 与 C++ 数据类型对照表"的文章.几乎囊括掉和大部分的数据了,太打击我了. 本文中有部分的数据没有测试.也有一些不错的是看了上百篇网文对比整理得来的.希望有帮助. //C++中的DLL函数原型为 //extern "C" __declspec(dllexport) bool 方...转载 2019-01-02 21:53:19 · 133 阅读 · 0 评论 -
Newtonsoft.Json高级用法
1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称 手机端应用讲究速度快,体验好。刚好手头上的一个项目服务端接口有性能问题,需要进行优化。在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数据,经过分析一个简单的列表接口每一行数据返回了16个字段,但是手机APP端只用到了...转载 2019-01-08 23:37:47 · 228 阅读 · 0 评论 -
C#下实现空白窗体中文输入
在空白窗体上打开输入法,在C#里的空白窗口是无论如何也是打不开输入法.设置了this.ImeMode= ImeMode.NoControl也是无法打开输入法的录字窗口.去Microsoft 开发论坛上问了一些问题.感谢周雪峰版主与Riquel_Dong 版主给的指点.用了API函数: ImmAssociateContext(IntPtr hWnd, IntPtr hIMC);终于把输入法给调了出来转载 2016-04-18 10:43:07 · 1228 阅读 · 0 评论 -
window插字符的使用
这个就是调用系统的插字符方法,另外还有GetCaretBlinkTime和SetCaretBlinkTime两个方法,记得在窗体获取焦点的时候创建插字符,窗体失去焦点时销毁插字符 [DllImport("user32.dll")] static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidt转载 2016-03-10 10:48:01 · 315 阅读 · 0 评论 -
浅析c#委托
委托:就是定义了一类函数的数据类型,这类函数的参数个数,参数类型,以及函数返回值都必须和委托定义的相同。这样的函数才能够保存在委托变量中,所以委托是一种数据类型。我们用委托来存放函数,也就是c++中定义的函数指针。委托类型可以用来定义变量,就像int可以定义整数一样。委托类型的变量,需要函数给它赋值,也就是给一个和委托定义时,参数,返回类型完全一样的函数名,通常就是函数的地址。原创 2013-12-30 17:36:21 · 660 阅读 · 0 评论 -
dll嵌套引用缺失会造成运行时异常
在这次实例模仿中,我遇到了一个很烦人的问题,就是我拿到的源代码能够正确的执行,得到数据。而我模仿的实例却在执行中老是会出异常。经过两三天的纠结,终于在我的一个小demo的测试中发现了这个问题,那就是:有的时候,我们写程序的时候只是引用了一个程序集的dll,这样是不够的,还要看这个dll有没有依赖其它的dll。如果有依赖其它的dll的话,而且我们没有添加引用就会造成编译器检测不出错误,或者缺少引用。原创 2014-01-03 15:09:15 · 880 阅读 · 0 评论 -
浅析c#回调函数用法
最近刚接触到回调函数,网上找了找解释,感觉不是很明白,在项目中看到了回调函数的实际用法,那就是回调函数的提供者并不调用这个函数,而是把这个函数地址作为参数,传递给自己调用的其它方法的参数。所以回调函数是要调用的函数不知道,不确定该怎么做是,在参数中给了个委托,让调用者把怎么做传递给调用的函数。所以我的理解就是回调函数其实就是委托作为函数参数的一种用法。欢迎批评指正。等以后有了新的理解再回来修改。原创 2014-01-06 12:27:47 · 1723 阅读 · 0 评论 -
WPF 修改UI
在程序初始化的过程中,如窗体加载的时候,WPF会调用后台的LOAD事件中的代码,渲染界面。但是之后WPF界面就是单独一个线程在管理。所以如果之后在后台修改代码的话会出现“The calling thread cannot access this object because a different thread”这样的异常,这是说我们用了WPF处理逻辑运算的线程,去修改UI线程中的内容。这样的异常原创 2013-12-23 13:28:39 · 977 阅读 · 0 评论 -
复制文件夹但文件夹存在
模仿微软的方法:while (Directory.Exists(targetFolderName)){ int I=1; targetFolderName+="-copy("+i.ToString()+")"; I++;}如果是文件的话,那就得把文件名修改下,再和扩展名相加。原创 2013-12-23 14:57:54 · 589 阅读 · 0 评论 -
TreeView代码动态添加带图标的节点
StackPanelsp = newStackPanel();Imageimg = newImage();img.Source = newBitmapImage(newUri("/Pictures/waterFolder.png",UriKind.Relative));img.Width = 30;img.Heig原创 2013-12-24 11:18:00 · 4610 阅读 · 1 评论 -
c#为什么要取消事件订阅
c#事件在订阅的时候应该注意:如果不是在构造函数中订阅的事件,在其它地方订阅的事件必须保证订阅完后,用-=取消订阅。否则在程序再次运行到代码处的时候就会再次订阅,所触发的事件也就变成了两个事件,如果第三次运行就会有三个事件被触发,从而使程序有想不到的效果。原创 2013-12-26 11:24:42 · 1668 阅读 · 0 评论 -
线程与事件
今天测试的时候发现,把事件丢到新的一个线程中,是不会得到原线程的触发的。这个好像显而易见,你在一个线程中定义了一个事件,然后再这个线程的生命期内新建另一线程并写触发事件。这个时候编译器不会报错,但在运行时就会出错,因为在子线程中,子线程会发现这个事件并没有定义,或者这个事件已经触发了,但是子线程发现自己线程内没有订阅事件的对象。所以在父线程中并没有任何反应。原创 2014-01-07 09:37:19 · 1471 阅读 · 0 评论 -
ListBox绑定
在做WPF ListBox相关绑定的时候,我们如果设置它的DataContext为一个集合,那这个绑定就不会成功。ListBox是条目容器,所以在绑定的时候,最好给它制定,ItemsSource为一个List对象,这样就能够实现模板,重复绑定了。原创 2013-12-27 10:56:37 · 780 阅读 · 0 评论 -
random生成不重复的随机数
Random random =newRandom(Guid.NewGuid().GetHashCode());如果将random放到函数中,多次调用可能会产生相同的随机数,加入上面的创建后就不会有相同的随机数了转载 2014-01-27 11:54:38 · 2131 阅读 · 0 评论 -
函数注释规范
在开发中,写的函数通常加上注释,以便于日后维护更新。但是注释的内容加什么呢?我觉得1.添加参数说明,以及返回值说明。2.如果函数操作了类的属性,或者类的私有变量,都有必要作相应的说明。原创 2014-02-24 16:27:07 · 1384 阅读 · 0 评论 -
byte[] to int64
privateInt64BytesToInt64 (byte[] sourceBytes){if (null==sourceBytes){thrownewArgumentNullException();}Int64 temp =newInt64();byte tempByte;for原创 2014-02-14 11:22:37 · 1482 阅读 · 0 评论 -
线程操作注意
1.当用后台线程操作某类耗时任务时。一定得添加timeOut原创 2014-05-04 17:36:17 · 538 阅读 · 0 评论 -
函数重载
以前总是觉得,当函数有很多歌参数,调用的时候参数又不定的时候,就复制函数,一遍一遍的粘贴。搞得代码很冗余。今天整理代码的时候发现,如果函数有多个重载,多个参数。我们总是可以以参数最少的那个作为调用对象的,新的重载就只用处理多出来的参数就行了。这样代码看起来就很漂亮了当然如果实现的功能有很大差别的话,还是必须写逻辑的。原创 2014-04-03 13:07:24 · 482 阅读 · 0 评论 -
c#操作IME代码
using System.Text;using System;using System.Runtime.InteropServices;namespace Whatever { public class GetComposition { [DllImport("imm32.dll")] public static extern转载 2015-03-02 15:45:32 · 3322 阅读 · 0 评论 -
C#调用OCX控件的常用方法[转]
小伙伴们在使用ICP提供的各种能力进行集成开发时常常会遇到一些技术上的困扰,例如ICP中很多接口是通过OCX控件的方式提供的,如何调用这些接口,就成了一个不大不小的问题,毕竟开发指南上可没这些内容啊~别着急,今天我就给大家介绍一下C#中调用OCX接口的常用方法。^_^y原文链接 http://developer.huawei.com/ict/forum/thread-21687.html...转载 2019-02-21 10:10:56 · 3444 阅读 · 0 评论