luwq168的专栏

C#学习之路

使用MvvmLight如何向ViewModel传递参数

MvvmLight是个很好的编程框架,使用方便,但如果不熟练也会有许多难以解决的问题。就比如不知道如何向ViewModel传递参数。在网上也有不少这样的问题,解答往往是使用它提供的Messenger,有方便之处,也有不便之处。比如,我要根据参数来获取数据库数据,那么势必要先做清空,再获取新数据,可...

2018-02-22 17:01:20

阅读数 541

评论数 0

Wpf ComboBox 多级正反向级联的实现

思考了一个多星期,经过反复测试验证,终于实现了Wpf ComboBox 多级正反向级联,话不多说,下面上代码: 这是一个企业管理系统示例,当然只是一个笑话。数据库有三张表,一张企业表,一张5级行政区划表,全国->省市->地市->县市->乡镇街道,还有一张注册表,标示使用者...

2018-01-09 11:17:43

阅读数 877

评论数 0

用C#创建应用程序桌面快捷方式

private void CreateShortcutOnDesktop() { //添加引用 (com->Windows Script Host Object Model),using IWshRuntimeLibrary; ...

2018-01-04 12:00:41

阅读数 3375

评论数 0

第二十课先乘除后加减——C#计算器编程教学

不少人念念不忘四则运算的运算符优先级,而Windows7的计算器基本型也没有实现它。 其实根据我的算式运算解决思路,其实就查找有乘除的项,先加好(对象加),然后做加减。 代码修改如下: private string RunCaclLists() { ...

2016-05-04 16:28:21

阅读数 1256

评论数 0

第十九课关于记忆存取——C#计算器编程教学

这个编程其实难度不高,无非就是反算式保存在memoryString里,读取时返回给caclString。如果增加点功能,无非就是把记忆的算式添加到新算式上。 比如: private void MemoryRecall() { if (...

2016-05-04 16:13:40

阅读数 657

评论数 0

第十八课程序容错能力——C#计算器编程教学

支持键盘输入,不可控因素增加,必须具有很强的容错能力。 一是中文习惯的乘除符号,与键盘及程序语言是不同的,所以,你要在SwitchString方法中添加对键盘乘除符号的支持。 二是对错误输入进行过滤。 三就是上面说的预期策略选择。 四是对计算构造try一catch语句,把出错原因摆在明面上...

2016-05-04 16:10:54

阅读数 471

评论数 0

第十七课预期策略选择——C#计算器编程教学

编程的一个难题是,方法我可以穷尽,但有些结果并非是用户的选择或期望,换个说法,有些表达具有二义性,可以这样,也可以那样,或者因为表达不够完整,因而结果是什么可能也有二义性。那么我们生成哪个结果呢? 本程序有很多这样的情况。比如,用户输入了计算式,他再按开根号,你是给他当前项的根号值,还是给算式结...

2016-05-04 16:08:07

阅读数 282

评论数 0

第十六课程序的测试和修改——C#计算器编程教学

为了编好这个程序,我点击运行几百次。从中找出的差错满箩筐。可能我写这一节课有点多余,因为大家都会这样做。但是我觉得还是要细说一下。 测试程序,首要的目的是检验解决问题思路的正确性,不正确就要及时换思路。其次,检验程序逻辑的正确性,尤其是各种循环代码,它的初始值,它的验证值,以及它是否超出了范围而...

2016-05-04 16:06:09

阅读数 354

评论数 0

第十五课代码复用——C#计算器编程教学

新手和老手的区别之一,就是看代码的简洁程度。简洁的办法之一就是代码复用。 看着我前面围绕等于写了至少5个方法,其实这其中有方法也由另外的方法调用,这就达到了复用的目的。举个例子,上节课讲到的取反,它的代码就用到了SetCaclLists方法。我不能在caclString上直接取反,那样做代码不是...

2016-05-04 16:04:54

阅读数 316

评论数 0

第十四课功能键之取反——C#计算器编程教学

编写取反的功能我曾经想换成求阶乘,因为是太麻烦了。我又不得不跟括号打交道。没办法啊,你不这样,算式表示就有问题。然而加上括号,好几个方法说我还没有对括号进行处理的代码,所以遇到括号我会忽略哦!说明一点,本程序没有实现括号功能,但是为了实现取反,在表示上可能有括号(当数字为负),其他的就不是括号的意...

2016-05-04 16:01:39

阅读数 841

评论数 0

第十三课功能键之开根号——C#计算器编程教学

首先说明一点,这里实现的是整个算式结果开根号,而不是输入项数的开根号。 所以,先计算,再开根号。 代码如下: private void Square() { try { if (n...

2016-05-04 15:59:40

阅读数 2314

评论数 0

第十二课通知界面变更接口——C#计算器编程教学

前面说了,这个接口微软的FrameWork库里的名称叫INotifyPropertyChanged,在System.ComponentModel名称空间里。前面也说过了,CaclString属性实现了这个接口,你们是否举一反三,Result属性也实现了这个接口呢?没有?那你的学习能力有问题。(哈)...

2016-05-04 15:56:36

阅读数 298

评论数 0

第十一课私有变量——C#计算器编程教学

前几节讲到了7个私有变量,分别是: private int i = 0; private IList caclLists = new List(); private string caclString = ""; private string result; private ...

2016-05-04 15:46:57

阅读数 277

评论数 0

第十课等于之调用关键调用——C#计算器编程教学

操作集合生成方法加调用生成方法,还没有真的进行等于操作。这节课就是本程序的“等于”的代码如何写? 先期做了很多基本功,都是围绕它来做的基础工作。完成了基础工作,总体工作就容易多了,不就是再次调用吗?不全对。 你考虑过计算吗?还有一个计算方法,这是核心!集合真的生成了,接着其实就是通过集合进行计...

2016-05-04 15:43:22

阅读数 230

评论数 0

第九课等于之关键调用——C#计算器编程教学

前几节课围绕等于花了很多心思,但这不是白花的,这是计算器的根本功能! 但心思还没花完,只是构建了可以生成操作的集合方法,可以并非真的生成了,关键如何调用,今天就说说这个。 真的生成可以操作的集合,先取名。取好方法、属性、事件、结构等名称是基本功和良好习惯,可以少很多说明文档。 我把生成集合的...

2016-05-04 15:36:50

阅读数 358

评论数 0

第八课等于之集合对象的操作——C#计算器编程教学

在Cacl类中,添加集合字段: IList caclLists = new List();或者可以这样写,以保证对象不为空: private IList caclLists; private IList CaclLists { ...

2016-05-04 15:33:44

阅读数 309

评论数 0

第七课等于之算式还原——C#计算器编程教学

导入了List集合,它是一个个对象,本程序还用到了算式还原,熟悉C#编程的朋友一定知道类里可以重写ToString方法,这里就用到了这个方法。 代码如下: public override string ToString() { strin...

2016-05-04 15:25:18

阅读数 325

评论数 0

第六课等于之对象相加——C#计算器编程教学

到第五课为止,只是解决了思路问题。具体办法还要多想想。 List是一个集合,集合里面是对象,对象之间怎么运算? 答案是:操作符重载。 这里当然是+重载。代码如下: public static CaclList operator +(CaclList a, CaclList ...

2016-05-04 15:18:44

阅读数 694

评论数 0

第五课等于之解决思路——C#计算器编程教学

输入了就要计算,这是计算器的功能要求。 本程序要解决多项式的运算,难度不是一般的大,甚至有人怀疑使用了Eval。已经说过了,当然不是这样的。 先分析算式特点,我们看到,算式其实是有规律的,一个数字加一个运算符,再加一个数字加一个运算符,如此循环而已。可能最后没有运算符只有数字了。程序员同志,你...

2016-05-04 15:15:20

阅读数 361

评论数 0

第四课输入时的细节处理——C#计算器编程教学

第一课中讲到,算式是有规矩的,不能任何输入都作有效输入,所以判断是否有效输入,这是第三课讲到了AddCaclString方法的负责处理。今天就专门讲这个方法。 先上代码: private void AddCaclString(bool isDecimal, bool isO...

2016-05-04 15:10:30

阅读数 640

评论数 0

提示
确定要删除当前文章?
取消 删除