.NET Developer, Microsoft MVP

C# and .NET 72 C# Programming Language and .NET Platform


C#将窗口最小化到系统托盘,并显示图标和快捷菜单

1. 拖一个notifyIcon和一个contextMenuStrip过来,他们会出现在窗体设计器的最下方: 然后完成你的menu,它暂时会出现在form上,但没关系,运行的时候不会显示。 2. 给notifyIcon设置icon属性,这一步很重要,不然系统托盘处不会有图标。然后将ContextMenuStrip属性设置为刚才的那个快捷菜单。 3. 现在运行程序的时候,任务栏右下角系统托盘处就会有我们的图标和菜单: 4. 现在我们来处理最小化隐藏和还原的问题: 首先要将form的ShowInTaskBar属性设为false,这样它就不会在任务栏中显示。但如果现在最小化,屏幕左下角仍然会有一条细小的标题栏。这里我们需要手工处理一下: 在form的resize事件里这样写: private void frmMain_Resize(object sender, …

C# WinForm Icon

当using遇到return

C#一大牛逼之处就是using语句简化了我们的程序。它的作用是在using结束后,立即释放被引用的资源。实质其实是调用被引用对象的Dispose()方法。这也是为喵被using的类型一定要实现IDisposable接口。虽然在.NET和JAVA里,程序员都不用关心手动释放内存的问题,但我认为在使用资源的时候加上using,是一种良好的习惯。有时候如果你不释放资源的话,可能会发生独占的问题。 好了,扯多了,话说回来,看看我今天遇到的一个有意思的问题。 今天心血来潮,想检验一下自己的代码,于是给项目启用了代码分析,用的是“Microsoft最少量建议规则”。结果以下代码产生了编译警告: public DataSet ExecuteDataSet(DbCommand cmd, Trans t) { cmd.Connection = t. …

using

LINQ to List泛型的几种简单查询

最近比较喜欢LINQ,真是碉堡了。下面写了个例子演示一下LINQ对List<T>的操作,包括排序、where条件、选部分数据等查询。最近偷懒,不写注释了,大家自己看一下就明白了~ 测试用的BLL和Model public class TestBLL { public List<TestModel> GetList() { return new List<TestModel>() { new TestModel(){ Id=1, Name="RYWE", Content="IOJADJ", Posttime=DateTime.Now.AddHours(1) }, new TestModel(){ Id=2, Name="JGFA", …

LINQ List Generics

C#数据结构之顺序栈

继续发很久以前的那个系列。。。今天是顺序栈。。 接口如下: public interface IStack<T> { void Clear(); void Push(T item); T Pop(); T GetTop(); } SqStack类: public class SqStack<T> : IStack<T> { private int _Maxsize; private T[] _Data; private int _Top; public T this[int index] { get { return _Data[index]; } …

C# Stack Data Structure

LINQ to XML CRUD,并且封装为DAL方法

LINQ非常牛逼,操作数据库和集合对象非常方便,已经得到了非常广泛的应用。好处我不多说了。今天来给大家看看LINQ对XML的增删改查操作,并且封装为DAL类,方便在多层结构的应用程序中使用。以我网站的友情链接模块为例: XML文件的结构如下: 1 XNA Develop http://www.xnadevelop.com/ 1 2 BlogNT 开源.NET博客 http://www.blognt.com/ 2  和以往写ORM一样,我们首先要把对数据的描述抽象为model: public sealed class FriendLink { private int _id; private string _title; …

CRUD DAL LINQ XML

几种常用的代码重构手法

最近看了Martin Fowler的著作《Refactoring: Improving the Design of Existing Code》收获颇大。书上的例子都是Java写的,其实我们同样可以运用在其他语言中,现在做.NET开发的话,用的最多的就是Visual Studio,它自带的重构功能可以很方便的整理代码。 重构的好处不多叙述了,大家都明白。书上论述的非常详细,我挑选几种最常用的重构方法,并用C#语言做示例,帮助大家了解必要的重构手法。另外,我也会附上一些自己平时在编程中常用的重构片段,但未必是100%正确或最好的。 1.Extract Method (提取函数) 样例代码: public void PrintOwing(double amount) { PrintBanner(); // print details Console.WriteLine(" …

C# Coding Refactor

C#数据结构之单链表LinkList

继续发数据结构系列~今天是单链表。类图:接口的代码不重复发了。在前一篇《C#数据结构之顺序表SqList》里有。节点类Node:public class Node {     private T _Data;     private Node _Next;     public T Data     {         get { return _Data; }         set { _Data = value; }     }          public Node Next     {         get { return _Next; }         set { _Next = value; }     }     public Node(T val, Node p)     {         _Data = val;   …

C# LinkList Data Structure

C#数据结构之顺序表SqList

最近在公司On Bench比较蛋疼,正好手头有本《C#数据结构》,拿来复习一下数据结构。以前大学里都是用C语言写的,C#从来没试过,毕竟C#本身就带有很多数据结构的Class可以直接拿来用。出于实验性目的,我还是看着书用C#写了几个demo。书上有些错误我也一并修正了。接下来发的代码都是经过测试可以正常运行的~DAY1.顺序表最近博客系统有点BUG,代码中如果有三条杠注释就会排版混乱,所以抱歉这次不能带注释了。IListDs接口:public interface IListDs {     void Clear();     void Append(T item);     void Insert(T item, int i);     T Delete(int i);     T GetElement(int i);     int Locate(T value); } …

C# SqList Data Structure

数组删除重复元素,List<T>实现

这是个很老很无趣的话题,常见于C语言的作业题。其实严格意义上来说,用List泛型属于作弊了~,但过程非常简单,没有技术含量,主要是让大家看看C#的优雅。我们知道,以前在C语言中要删除数组里的重复元素非常麻烦,要有两个游标(这意味着至少2层for嵌套),还要关心元素移位的问题。现在,如果把数组这样可以看作集合的东西放到集合类型里,比如List泛型,事情就会容易的多:static void Main(string[] args) {     List strs = new List() { "a", "b", "c", "c", "d", "c", "a", "e", "f", "b", "g", "h" };     // 不能用foreach,因为迭代器是只读的     for (int i = 0; i 有图有真相:

C# List<T> Generics Array

C#仿魔兽世界密保卡OOP重构版

昨天下午我把《C#仿魔兽世界密保卡简单实现》 中的代码用面向对象的方法重构了一遍,引入了2个类:MatrixCard和Cell。MatrixCard描述的是密保卡,构造函数中会随机生成一个二 维矩阵,所以每次new一个MatrixCard对象,就已经生成了一张密保卡。Cell是单元格的意思,将行号、列号、列名做了封装。 MatrixCard类中保留了之前的大部分静态方法,以便灵活调用。由于本人水平有限,这次的设计并不是非常完美,并且也有一些遗憾。比如现在只能通过Cell[i]的方式来访问单元格,而不可以像Cell["A0"]这样写。有空的时候哥去研究一下重载索引器,争取把它实现。下面发代码:MatrixCard类:using System; using System.Collections.Generic; namespace GeekStudio.Common {    …

C# OOP Refactor