- 博客(44)
- 资源 (12)
- 收藏
- 关注
原创 WPF ControlTemplate 控件模板
区别于 DataTemplate 数据模板,ControlTemplate 是控件模板,是为自定义控件的 Template 属性服务的,Template 属性类型就是 ControlTemplate。自定义一个控件 MyControl,包含一个字符串类型的依赖属性。使用这个自定义控件,设置其 MyProperty 属性值,前端设置 ControlTemplate,
2024-12-18 15:23:01
694
原创 WPF DataTemplate 数据模板
DataTemplate 顾名思义,数据模板,在 wpf 中使用非常频繁。它一般用在带有 DataTemplate 依赖属性的控件中,如 ContentControl、集合控件 ListBox、ItemsControl 、TabControls 等。
2024-12-18 15:00:46
1378
原创 WPF 布局控件
wpf 布局控件有很多,常用的有:Grid, UniformGrid, Border, StackPanel, WrapPanel, DockPanel。
2024-12-18 09:40:11
766
原创 WPF 消息循环(二)
我们已经知道,win32/MFC/WinForm/WPF 都依靠消息循环驱动,让程序跑起来。这里就介绍 WPF 中是如何使用消息循环来驱动程序的。
2024-12-13 17:30:33
1211
原创 WPF 消息循环(一)
在说 wpf 消息循环之前,有必要了解一下软件程序运行的机制,这对理解 wpf 消息循环也有很大帮助。这是一段 c# Main 函数(类似 c/c++ 的 main 函数),如果不写 Console.ReadLine();,则程序会“一闪而过”,写了 Console.ReadLine();程序会阻塞,用户就可以查看结果。inputToLower这里有一个while循环,这样程序就可以一直运行了,我们可以说:这个程序由这个 while 循环驱动。那么 Windows 程序是由什么驱动的?
2024-12-13 17:23:07
950
原创 WPF 相比 winform 的优势
方便地将数据与用户界面进行绑定,减少代码量,使用 MVVM 模式也能更改的开发和维护项目代码。:能够创建更具吸引力和现代化的用户界面,支持更复杂的图形和动画效果。:一种声明性的标记语言,使界面设计更加直观和易于理解。:将视图和业务逻辑更好地分离,提高代码的可维护性。:提供了更强大的布局系统,使得界面设计更加灵活。:图形可以自动缩放,适应不同的分辨率和屏幕大小。:可以轻松自定义控件和模板,以满足特定的需求。:可以创建各种复杂的动画效果,增强用户体验。:可以通过硬件加速等方式提高应用程序的性能。
2024-12-13 16:49:06
588
原创 c# TaskScheduler
在MyTaskScheduler 中,我建了一个线程 executionThread,线程方法是一个while循环,一直在监听有没有新的Task过来,有多个Task过来,就按Task创建顺序执行,没有的话 while 就暂停在 waitany 处。一般情况下没什么大问题,但如果这3个中的每个Task都非常耗CPU或者内存,而计算机又需要预留资源去干别的事情,这就要让3个Task不能同时执行。答案就是:TaskScheduler,它可以让已经创建好的 Task 去按照特殊的顺序来执行。怎样达到这样的效果?
2024-12-13 16:03:54
575
原创 c# 协变与抗变
在具有可变性的条件下,与原始类型转换方向相同的可变性称作协变(covariant)。在具有可变性的条件下,与原始类型转换方向相反的可变性称作抗变(contravariant),也称逆变。可变性远远不只是针对映射到数组的能力,也有映射其它集合的能力如List.很多人会问,说了这么多,到底这个协变或者抗变有什么实际价值?为什么接口参数类型前加了个 out 关键字就可以安全转换了?因为在接口类型参数前加上修饰关键字 in 和 out 可以表示该类型参数支持抗变和协变,会在安全范围内进行转换。
2024-12-12 13:30:23
1125
原创 C# 控制台程序 打开窗体
控制台项目Project1,程序代码,如:class Program{ private static Thread _thread; static void Main(string[] args) { _thread = new Thread(TestClass.Show); _thread.SetApartmentState(ApartmentState.STA);//设...
2020-01-17 17:33:32
3749
原创 WPF Dispatcher.FromThread
Dispatcher.FromThread 方法可以从线程中获得 Dispatcher ,如果此线程中操作了UI相关的对象,如窗体,控件等,那么它的返回值将不为null, 否则为null.举个例子:新建一个wpf应用:默认窗体 MainWindow 里放一个测试按钮。<Window x:Class="WpfApp1.MainWindow" xmlns="http...
2019-11-11 17:03:01
354
1
原创 C# async await
目录一.写法二.用法这里详细记录一下 async 和 await 的用法和注意点,当然前提是对 Task 比较了解了,因为 async 和 await 核心还是在 Task ,下面以实例来说明:一.写法先介绍一下写法,刚接触这两个关键字的时候,看别人写的代码总有些看不懂,后来发现原来是熟手们都喜欢简写,导致新手看不懂,如:private static async Task...
2019-10-25 16:03:10
558
原创 C# 异步编程 并行编程
目录异步编程1. Thread2. Task3.async + await并行编程Parallel本篇简单记录一下异步编程和并行编程,并以下图一个 Demo 来演示,源码地址我会公布在文章结尾。 异步编程 个人觉得,异步无非就是不影响某个线程的情况下,在另外的线程里执行任务的过程。异步编程即多线程编程。C# 里多线程编程写法有很多种,这里记录三种。...
2018-09-28 13:46:50
9526
2
原创 C#调用C++ DLL
记录一下两个内容:1.使用VS2015创建C++ DLL;2.使用C#调用上面创建好的C++ DLL;一.使用VS2015创建C++ DLL1.选择win32项目2.点击【下一步】->选择 dll 和预编译头3.随便添加一个头文件【MyTester.h】:并在stdafx.h文件中添加引用:随便输入一些简单定义代码,这里以 struct / int / bool / char /BYTE 类...
2018-06-13 11:18:28
8807
原创 C++ 模拟 C#事件
网上看到一些关于C++模拟和C#类似的Event处理,这里记录一下:新建一个event.h头文件:#pragma oncetemplate <typename Handler>class event{private: Handler m_Handler;protected: //模拟C# event 的add/remove访问器 //如果要重新实现add/remo...
2018-06-08 15:50:45
702
原创 Visual Studio 引用不到头文件的问题
在D盘Include文件夹下放了个头文件:CtiSMAPIWIn32.h在vs中也设置好了附加包含目录:结果在项目中怎么也引用不到该头文件:最后发现是因为:vs需要 所有配置+平台都得配置 附加包含目录 才行:
2017-11-23 15:17:25
33339
8
原创 Mono跨平台体验
最近遇到一个特殊需求,客户要求做一个运行在Linux上的软件,并且要有软件界面。考虑到不会GTK#,QT也不熟悉,所以想到还是用mono Windows Form(.net跨平台项目)比较好,这里记录一下做法。1.首先得准备一些东西:一台Windows电脑visual studio 2015 (其它版本也可以)一个虚拟机软件VisualBox(其它虚拟机软件也可以,这里以Visua
2017-10-13 09:31:06
1299
原创 WPF自定义控件 按钮 (二)
上一篇介绍了如何使用阿里巴巴图标和制作带图标的按钮,前面的做法只是简单介绍,要真正能够运用到项目中,还有一段路要走,这里继续介绍如何完善之前的自定义按钮,使之能够合理的运用到以后的项目中。就拿上一个测试代码来说:<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/w
2017-09-19 14:38:49
1199
原创 WPF自定义控件 使用阿里巴巴图标
上一篇介绍了 WPF自定义控件 按钮 (一),在进一步介绍WPF自定义控件 高级按钮之前,先介绍一下如何在WPF项目中使用阿里巴巴图标。还是在上一篇项目基础上,在WPF自定义控件类库项目 Controls 文件夹下,新建一个资源字典(WPF)文件,取名: MyIcon.xaml :
2017-09-19 13:17:53
2578
原创 WPF自定义控件 按钮 (一)
从这里开始,记录WPF自定义控件的制作方法,相比制作传统winform的自定义控件来说,WPF自定义控件做起来更加优雅,效果也更好。从最常用的控件 Button 开始:首先从MSDN上查看 Button 控件的默认样式和模板,如下:
2017-09-19 09:58:35
4155
原创 C#调试C++ DLL代码
有些C#写的项目中会调用到C++ DLL,有时候需要调试进C++代码里去查问题,过程中经常会遇到无法命中C++代码断点的问题,在此记录一下常用的设置方式,照着设置的话基本上没什么问题:1)确保C#和C++项目源代码在同一个解决方案里 (这一点有待商榷,后来经过验证并不一定要在同一个解决方案里);2)确保C#项目,属性设置->调试选项->“支持非托管代码调试”打钩( 如果是...
2017-08-03 15:12:30
5268
1
原创 SQL Server 远程连接问题
1.如何配置sqlserver使之能够远程被访问,网上搜一大把,如:SQL Server 2008 R2如何开启数据库的远程连接2.尽管是配置好了,但是还是经常会出现不能访问的问题,可参考:SQL - 配置SQLServer 使其可以远程访问3.检查能不能远程访问,可以使用SQL Server Management Studio输入【地址,端口】:如,我在路由器上配置了映射端口,外部访
2016-10-15 00:13:36
995
原创 C++封装C#中的事件
背景: 用户要求我们提供给他们API,如果这些API都是用C#写的DLL,而用户要求API为C++的 DLL,这种情况下就需要将C# DLL里面的内容封装成C++ DLL。这里针对c#中的事件,记录一下如何使用C++来封装c#的事件:1.创建一个简单的C# DLL实例:a.新建一个c# DLL项目,取名:TestDotNetDLL,添加一个类:Customer,这
2016-08-09 11:40:44
6323
12
原创 C++调用C++写的DLL
1. 创建DLL项目:a.新建一个空的win32 DLL项目,添加一个简单的头文件和一个cpp文件:这里,头文件位于该路径之下:D:\Code\Demos\Test_Win32DLL_V1\Test_Win32DLL_V1 头文件和cpp文件内容分别是:#pragma once#include using namespace std;#defi
2016-08-04 12:26:56
890
原创 使用SVN-subwcrev命令 发布软件版本
这里使用visual studio (C#) 软件开发环境作为介绍,其它依葫芦画瓢。在软件开发过程中,每次对一个软件产品的release,都要处理该软件版本号。有的版本号是人为定的,有些是自动生成的,这里介绍在使用SVN版本管理软件的qingkua
2016-06-15 14:23:48
5168
原创 主机不能访问虚拟机中的web服务【解决方案】
情况是这样的:在虚拟机visualBox里安装了centos7系统,并且在该系统里运行了一个web服务,想通过宿主机或者外网来访问该服务,总是无法访问(虚拟机网卡已配置成桥接):宿主机【win7】ip:虚拟机【CentOS7】ip:彼此能互相ping通,虚拟机中启动了一个简单的web服务:一个简单的只要访问就能得到一句简单的响应:在虚拟机内部能够访问:
2016-01-21 01:30:52
71517
8
原创 jquery文本框改变事件
可参考如下几个事件: TEXTBOX EVENT $(document).ready(function(){ //按键弹起时触发事件 $("#mytext").keyup(function(){ var txtChange = $("#mytext").val(); $("#p1").html(""+txtChange
2015-09-10 23:00:59
29970
原创 DataGridView特殊按钮(DisableButtonColumn)
实现的效果如下图,点击一次按钮之后,按钮不可再点击:主要代码如下: private void AddButtonColumn() { DataGridViewDisableButtonColumn column1 = new DataGridViewDisableButtonColumn(); colum
2015-08-17 16:34:35
4441
4
原创 C# 模仿QQ右下角 消息闪烁提示
主要是使用自带的notifyIcon这个控件即可,用两个icon图片循环切换,效果即闪烁提示。主要代码如下:public partial class Form1 : Form { int i = 0; //先设置一个全局变量 i ,用来控制图片索引,然后创建定时事件,双击定时控件就可以编辑 private Icon ico1 = Propert
2015-08-17 14:25:18
4526
原创 Asp.Net 4.5网站使用IIS发布 uploadify插件 上传文件大小问题
遇到一件头大的事情,最近一个mvc网站项目是Asp.Net 4.5版本,发布在IIS 6.1上面.项目中使用到jQuery的一个文件上传控件uploadify,结果这个控件死活上传不了超过30M的文件,也找了网上各种解决方案,在webconfig下加了下面两个地方:
2015-07-18 18:25:11
1919
原创 C# 使用 Socket (Udp + Tcp)
一个简单示例,记录下C#中如何使用Socket:这个示例的作用是:服务端可以监测到是否和客户端连接,并且如果连上了,可以互相收发消息。如上图,我用的本机测试的,如果是不同机器且连着网,请换成对应的局域网ip或者公网映射ip.步骤:1.新增个空解决方案,并添加两个winform项目,一个是server端一个是client端:2.在服务端和客户端分别加入如下代码:服...
2015-06-29 17:35:38
4814
1
原创 outlook 2013 配置163企业邮箱
网页版的邮箱用得实在心累......这里记录下outlook 2013 如何配置163企业邮箱.一.首先配置outlook2013,步骤如下:1)打开outlook 2013,如下图,填好:2)点开“其他设置“,如下填好:3)点击”下一步”或者“测试账户设置”:4)最终如下图:-----------------------
2015-04-23 21:45:13
42344
原创 visual studio 宏不能运行的解决方法
VisualStudio里有宏功能(VisualStudio使用技巧),一般我只是用来自动打打注释(本人较懒),但是有时候windows自动更新之后,宏会变得不能运行,下面这种方法可以解决,网上找的比较辛苦,记录一下:在:C:\Program Files\Common Files\microsoft shared\VSA\9.0\VsaEnv其中64位机器可能在
2015-04-18 22:57:06
1619
原创 设置鼠标光标在DataGridView某个单元格中的位置
设置鼠标光标在DataGridView某个单元格中的位置这里不是介绍如何选中DataGridView某个单元格,而是:在DataGridView某个单元格正处于编辑状态时,如何将鼠标的编辑光标自动定位到特定位置。如下图:将输入光标定位到test字符串中间:现实生活中,在医院、汽车、银行等窗口单位的时候,工作人员很少用到鼠标,他们操作键盘的速度甚至比程
2015-04-05 16:29:55
14472
原创 C#:Attribute类
AttributeAttribute,作为名词,意思是标注,特征的意思。我们经常在日常编码中遇到,在某些类,方法,字段,属性上面有如下情形: [AttributeTargets_All] public TestAttributeClass() { } [Obsolete("该方法已经停用!请使用Method2
2013-12-03 23:01:02
1654
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人