2019-11-19 16:23:38
我们把有用的东西称为资源。“兵马未动,粮草先行”-----程序中的各种数据就是算法的原料和粮草。程序中可以存放数据的地方有很多,可以放在数据库里、可以存储在变量里。介于数据库存储和变量存储之间,我们还可以把数据存储在程序主体之外的文件里。外部文件与程序主体分离,这就有可能丢失或者损坏,编译器允许我们把外部文件编译进程序主体、称为程序主体不可分割的一部分。这就是传统意义上的程序资源(也称为二进制资源...
2019-11-19 14:14:25
WPF为我们准备了完善的命令系统,你可能会问:“有了路由事件为什么还需要命令系统呢?”。事件的作用是发布、传播一些消息,消息传达到了接收者,事件的指令也就算完成了,至于如何响应事件送来的消息事件并不做任何限制,每个接收者可已用自己的行为来响应事件。也就是说,事件不具有约束力。命令和事件的区别就在于命令具有约束力。的确,在实际编程工作中,即使只用事件不用命令程序的逻辑一样被驱动的很好,但我们不能够阻...
2019-11-19 13:51:01
就像属性系统在WPF中得到了升级、进化为依赖属性一样,事件系统在WPF也得到了升级-----进化成为了路由事件(Routed Event),并在其基础上衍生出命令传递机制。这些机制在很大程度上减少了对程序员的束缚,让程序的设计和实现更加的灵活,模块之间的耦合度也进一步降低,这一章我们一起来领略一下新消息机制的风采。8.1 近观WPF的树形结构路由一词的意思大概是这样:起点...
2019-11-19 10:08:50
通过前面的学习,我们已经知道Data Binding是WPF“数据驱动UI”理念的基础。上一章我们将主要的精力放在了Binding的数据源这一端,研究了Binding的Source和Path。本章我们将把目光移向Binding的目标端,研究一下什么样的对象才能作为Binding的Target以及Binding将把数据送往何处。1.1 属性(Property)的来龙去脉程序的本质就是“数据...
2019-11-18 13:25:23
1,Data Binding在WPF中的地位程序的本质是数据+算法。数据会在存储、逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要。但算法在3层中的分布是不均匀的,对于一个3层结构的程序来说,算法一般分布在这几处:A。数据库内部。B。读取和写回数据。C。业务逻辑。D。数据展示。E。界面与逻辑的交互。A,B两部分的算法一般都非常稳定,不会轻易去改动,复用性也很高;C处与客户需求最紧密...
2019-11-18 13:15:10
1 控件到底是什么?程序的本质就是“数据+算法”------用户输入原始的数据,算法处理原始数据并得到结果数据。问题就在于程序如何将结果数据显示给用户。同样一组数据,你可以使用LED阵列显示出来,或者以命令行模式借助各种格式控制符(如TAB)对齐并输出,但这些都不如图形界面(GUI Graphic User Interface)来的友好和方便。GUI的方便在于它对数据展示的直观性,程序员可...
2019-11-18 11:52:24
X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的、用来引导XAML代码将XAML代码编译为CLR代码。4.1X名称空间里面到底都有些什么?x名称空间映射的是:http://schemas.microsoft.com/winfx/2006/xaml,望文生义,它包含的类均与解析XAML语言相关,所以亦称之为“XAML名称空间”。与C#语言一样,XAML也有自己的编译器...
2019-11-18 11:39:40
1,XAML文档的树形结构:UI在用户眼里面是个平面结构。如下图所示,在用户眼里看来,这个界面就是一个窗体里面平铺了4个文本框和一个按钮的界面。在传统的Visual C++、Delphi、Visual Basic6.0和Windows Form程序员的思维里,UI也是一个平面的结构。因此,程序员要做的事情就是根据美工给的给定的UI布局把控件安置在窗体的表面,并用使用长度,宽度和间距把控件对齐。与传...
2019-11-18 11:32:55
剖析最简单的XMAL代码:<Window x:Class="WpfApplication2.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft...
2019-11-18 11:30:41
微软为了把开发模式从网络开发移植到桌面开发和富媒体网络程序的开发上,微软创造了一种新的开发语言------XMAL(读作ZAML),XAML全称Extensible Application MarkUp Language。即可扩展应用程序标记语言。它在做桌面开发和富媒体网络程序开发中扮演HTML+CSS+JS的角色,成为设计师和程序员沟通的枢纽。 现在设计师和程序员一起工作,共同...
2019-11-18 11:28:47
自古以来,生产工具的先进程度就代表了生成力的先进程度-------生成力的发展要求人们不断的研发出新的生产工具,新生成工具的诞生又使得生产效率飞越。作为劳动生产的一种,计算机软件开发也需要工具,随着程序员们手中的工具越来越强大,软件开发的效率和质量明显提高。善于学习和掌握新工具、新技术的程序员们也总是能得到更多的实惠。 微软Windows操作系统已经成功推出10多年,在WIn...
2019-11-17 21:40:30
分布式系统有很多成熟的解决方案。如:微软的WCF。WCF太过于复杂,配置也麻烦。其实可以自己动手设计一个小的分布式系统。系统的原理完全在自己掌握之中,可以根据业务随机而变。这里展示远程调用最核心最基本的处理逻辑,其实远程调用并不复杂神秘。分布式系统其实是数据流的交换。数据必须快速的从一段传送到另一端,否则系统性能就大打折扣。对于.net,本人设计一个非常优化易于使用的网络库(EasyNetMess...
2019-11-09 19:28:46
勇哥买了一台10核心20线程的32G内存的服务器, 一时好奇, 想试试并发运算的情况下, cpu的表现如何 .字符串相关度计算是文本处理和数据挖掘中一个不可或缺的方法,例如论文查重等。Levenshtein Distance可以用来比较两个字符串的相似度,即两个字符串之间的“距离”。这个“距离”其实就是从源字符串变换到目标字符串需要进行的删除、插入和替换的次数。 有不少该算法的改进版本,可大幅...
2019-10-08 20:56:50
勇哥手里这份代码启动后报下面的错误。“创建窗口句柄之前,不能在控件上调用Invoke或BeginInvoke”经检查,是在初始化设备时由OnNotifyError报出来。这个OnNotifyError是主窗体上的一个委托。原来是这样的。 public void OnNotifyOK(string msg)
{
this.Invoke(new Ac...
2019-08-31 21:52:46
微软的Chart图表控件好处是免费的,并且基本的画曲线、柱状图等功能还是有的。虽然Teechart非常优秀,但是它是收费的。所以熟悉一下Chart没什么坏处,目前勇哥有一个案子也用到了Chart,是一款测量R角的设备。勇哥提供两段代码来演示Chart的用法,以后有机会,还是想把Chart写成一个ChartHelper类集成到netMarketing中去。第一个演示例子:using System;...
2019-08-10 11:31:40
今天勇哥有一段代码遇到这个需求,即把数据库表的实体类的属性名字与其值显示到UI上去。在网上找到几个函数,解决了问题。 /// <summary>
/// 获取类中的属性值
/// </summary>
/// <param name="FieldName"></param>...
2019-07-16 20:36:25
这个问题是这样的,勇哥希望把另一个程序的一个form或者自定义控件复制到现有的工程中去。最笨的方法是创建空白form,然后把要复制的form上的内容粘贴过来,然后把相应代码也粘贴过来。最蠢的人都知道直接把这个form的三个文件复制过来就可以了,三个文件即是Designer.cs /.cs /.resx下图所示是: Form1.cs, Form1.Designer.cs, Form1.resx但是...
2019-07-11 22:27:40
反混淆是用来干什么的?勇哥不知道。我只是用来参考一下作者代码的编程思路用的。我看了一下,我硬盘中的相关工具好多,截个图大家参考一下下面说一个勇哥常用的:c#反混淆工具de4dotde4dot是一个开源的.net反混淆脱壳工具,是用C#编写的,介绍一下它的使用方法首先 pushd 到de4dot.exe所在文件夹,然后调用 de4dot.exe 路径+dll名称如下图Detected Unknow...
2019-07-11 09:44:42
如下图,黑色的电芯,蓝色的是治具。把电芯放在治具里面,如果可以轻松放进去,证明电芯的尺寸是合格的。在这个例子里面,就要用到检查一个多边形是否在另一个多边形的内部的问题。使用C#的 Region类就可以检查一个多边形是否在另一个多边的形的内部。勇哥因为上面的治具验证电芯的问题,偶然发现C#里面居然还有这么一个Region类。这个检查方法是:Region.IsVisible,如下图所示:下面的演示程序...
2019-07-03 17:04:39
如果用C#的Tuple元组从函数传出多个值,是可以的,但是在VS2017之前,取元组对象的元素时,是类似下面这样的用法。xxx.Item1xxx.Item2xxx.Item3由于这样不好识别其值究竟是什么,所以不好用。如果使用对象数组的话,你可以使用下标来访问其元素,但是需要转换数据类型。如果使用halcon的Tuple对象,就好用多了。下面勇哥演示一下其基本的使用方法。几点说明:使用TupleC...
2019-05-29 22:27:59
一段常用的代码,取指定目录下所有的文件,并且会递归搜索所有子目录下的文件。using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
us...
2019-04-21 21:16:23
勇哥在看到泛型类的时候,感觉需要补充一下这方面的知识,本站还原有一篇相关的文章:C# 中泛型类的定义以下引用一位前辈的更详细的一篇文章——————————————————————————————所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型。 泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。在定义泛型类时,在对客户端代码能够在实例化类时,可以用类...
2019-03-28 11:07:01
最近机器偶尔会报下面的错误,之前从来没有遇到过。机器软体使用了一个DataGridView用来显示测量的数据,问题就出在这个控件上面。(图1)问题一:DataTable内部索引已损坏解决的办法其实很简单,只要了解出错原因。一般我们会使用DataTable.Select()方法来筛选数据,而DataTable会在执行Select()方法的时候系统会默认创建一个DataView,而DataView创建...
2019-03-16 13:06:45
函数式编程中比较有代表性的特点如:高阶函数(函数做为函数的参数),组合函数,纯函数缓存等。F#就是一门函数式编程语言,但是C#是一门指令性的语言,并不包含全部函数式编程的全部特征。用C#实现函数式编程,利用到了C#各种新增特性,如lambda表达式、表达式树、LINQ、扩展方法等等。因此这个话题一方面是深入理解C#语言的一个途径,另一方面来说,一种新的编程模式本身就是非常有趣也有能吊起人味口的东西...
2019-03-16 12:30:37
语言集成查询 (LINQ) 是 Visual Studio 2008 和 .NET Framework 3.5 版中引入的功能,真正意义上的神来之笔。在此之前,SQL 数据库、XML 文档、各种 Web 服务等等你需要分别学习它们各自的查询语言,有了LINQ,你可以使用语言关键字和熟悉的运算符(类似于SQL查询语言)统一处理,并且利用扩展方法可以无限扩展LINQ的功能。LINQ之美让人惊叹,可以用...
2019-03-15 23:22:13
这是之前勇哥学习委托时的实验代码,有兴趣的朋友可以参考一下。放在网页上比放在硬盘上睡觉要好些,翻阅起来也方便,对于这类常学常忘的内容,以后还是多整理一些放到网站上来。演示程序的工程结构:Class1.csusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namesp...
2019-03-15 22:28:13
勇哥之前学习反射时的测试代码,希望对各位有点参考意义。程序工程结构如下:参考代码:lib1.class1.csusing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace lib1
{
public class Class1
{...
2019-03-15 15:24:23
本篇文章讨论可空值类型(Nullable<T>)的转换,却确地说是如何将一种类型的值对象转换成相应的可空值。这来源于今天我们的一个成员遇到的一个小问题,我经过一些整理写了这篇文章。虽然没有什么技术含量可言,也希望对某些读者带来帮助。 目录
一、四种典型的值类型转换方式
二、当类型转换遭遇Nullable<T> 三、将基于Nullable...
2019-03-15 15:13:18
C#最常见的重载是构造函数重载,各种方法包括ToString()也可以重载,运算符+-*/也可以重载,今天我们就来说说运算符重载。一、简介 C# 允许用户定义的类型通过使用 operator 关键字定义静态成员函数来重载运算符。注意必须用public修饰且必须是类的静态的方法。但并非所有内置运算符都可以被重载,详见表1:运算符可重载性 +、-、!、~、++、--、true、false 可以重载...
2019-03-09 22:37:44
勇哥今天在C#引用类库时出现黄色三角加感叹号,如下图所示:C#项目 在引用中有个引用项上有个黄色三角加感叹号导致无法引用其命名空间,报错。这个原因是因为类库的目标框架不一致,修改成一样就可以了。选中类库右击属性;“目标框架”,修改成与引用项目目标框架一致即可--------------------- 作者:hackpig来源:www.skcircle.com版权声明:本文为博主原创文章,转载请附上...