<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel>
<title>C# - 翔宇亭IT乐园</title>
<link>http://www.biye5u.com</link>
<language>zh-cn</language>
<description>翔宇亭IT乐园</description>
<copyright>http://www.biye5u.com</copyright>
<generator>Rss Generator By NewAsp.Net</generator>
<docs>http://www.biye5u.com/article/rssfeed.asp</docs>
<image>
<title><![CDATA[翔宇亭IT乐园]]></title>
<url>http://www.biye5u.com/images/logo.gif</url>
<link>http://www.biye5u.com</link>
</image>
<item>
<title><![CDATA[安装Visual studio2019时不进入安装界面而闪退的解决方案]]></title>
<link>/article/Csharp/others/2020/6421.html</link>
<author>本站</author>
<category><![CDATA[C#其它]]></category>
<pubDate>2020-05-23 10:21:26</pubDate>
<description><![CDATA[1、问题描述
情形1：
从微软官方网站下载的visual studio2019 WEB安装包，使用在线安装方式安装。启动后，提示下载，下载完后，验证，然后再下载，再验证.....，最后提示“无法下载安装文件。请检查Internet连接，然后重试”。当然网络连接是正常的。
情形2：
点击安装，启动下载提示界面，也提示安装包下载完毕，但卡在“正在验证”进行不下去，或者提示安装完毕，但不会进入到安装设置界面，及真正的安装进度界面，然后就退出。多次重试也是如此。如下图所示，即卡在“即将完成...一切即将准备就绪”，等待一会儿后就会退出。

情形3：
准备使用离线下载安装包方式安装，但下载...]]></description>
</item>
<item>
<title><![CDATA[C#中只读(readonly)字段的使用]]></title>
<link>/article/Csharp/jichu/2018/6394.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2018-10-22 20:16:58</pubDate>
<description><![CDATA[顾名思义，只读字段，就是说在程序运行过程中，程序中可以读取这个字段的值，而不能修改它的值。在C#中可以使用readonly关键词来定义一个只读字段。
在C#中使用只读字段主要有以下几个要点：
（1）只读字段可以在定义的同时赋值或者在类的构造方法中给其赋值；
（2）除了构造方法外，其他地方不可以修改只读字段的值；
（3）只读字段的属性只能有get访问器，不能有set，这是显而易见的；
只读字段与常量的区别
常量（使用const关键字定义）只能在声明的同时初始化（赋值）。
readonly 字段可以在声明或构造函数中初始化。 因此，根据所使用的构造函数，readonly 字段可能具有...]]></description>
</item>
<item>
<title><![CDATA[使用C#实现顺序栈的算法]]></title>
<link>/article/Csharp/methprog/2018/6367.html</link>
<author>biye5u.com</author>
<category><![CDATA[算法设计]]></category>
<pubDate>2018-07-01 19:27:51</pubDate>
<description><![CDATA[栈(Stack)是限定在表尾端进行插入或删除操作的线性表。因此，表尾具有特殊的含义，称之为栈顶（Top），另一端是固定的，称为栈底（Bottom）。不含任何数据元素的栈为空栈(Empty Stack)。
栈通常记为：S= (a1,a2,…,an)，S是英文单词stack的第1个字母。栈中元素按a1，a2，a3，...，an的次序进栈，出栈的次序为栈顶元素。即出栈的次序与进栈相反，an第一个出栈，a1最后一个出栈。所以，栈的操作是按照后进先出(Last In First Out，简称LIFO)或先进后出(First In Last Out，简称FILO)的原则进行的，因此，栈又称为LIFO表或...]]></description>
</item>
<item>
<title><![CDATA[C#中等待一个按键后退出程序]]></title>
<link>/article/Csharp/jichu/2017/6320.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2017-03-27 20:49:45</pubDate>
<description><![CDATA[ 有时，在程序中我们需要等待用户的一个按键后退出程序。
如要求在用户输入若干个整数后，当用户按下Q键时退出输入，并计算其和。
下面的程序段可以实现这个要求：
Console.WriteLine(&quot;按下Q键时结束录入：&quot;); 
ConsoleKey key; 
do 
&#123; 
key = Console.ReadKey().Key; 
//其它处理
&#125; while (key != ConsoleKey.Q); ]]></description>
</item>
<item>
<title><![CDATA[C#中生成随机不重复数列的算法]]></title>
<link>/article/Csharp/methprog/2017/6319.html</link>
<author>cnblogs:Fly_Elephant</author>
<category><![CDATA[算法设计]]></category>
<pubDate>2017-03-24 10:51:31</pubDate>
<description><![CDATA[给定一个正整数n，需要输出一个长度为n的数组，数组元素是随机数，范围为0 &ndash; n-1，且元素不能重复。比如 n = 3 时，需要获取一个长度为3的数组，元素范围为0-2；简单的理解就是生成一个无序的随机数组。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RandomNumber
&#123;
 class Program
 &#123;
 static void Main(...]]></description>
</item>
<item>
<title><![CDATA[C#程序中动态改变窗体大小的方法]]></title>
<link>/article/Csharp/winform/2016/6306.html</link>
<author>不详</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2016-02-17 12:45:17</pubDate>
<description><![CDATA[在C#中可以使用以下方法改变窗体的高或宽
//把窗口的高变为300像素，宽不变
 this.Size = new Size(this.Size.Width,300);
//把窗口的宽变为500像素，高不变
 this.Size=new Size(500,this.Size.Height);
//把窗口的高和宽都变为350像素
 this.Size=new Size(350,350);]]></description>
</item>
<item>
<title><![CDATA[C#应用程序之间相互通信的方法]]></title>
<link>/article/Csharp/superapp/2014/6286.html</link>
<author>佚名</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2014-10-30 17:29:16</pubDate>
<description><![CDATA[有时，我们需要两个应用程序之间发送消息，本文就转载了一篇文章介绍了实现此功能的方法。
注意这里发送消息的函数：public static void SendMessage(string destProcessName, int msgID, string strMsg)，只能发送一个msgID和一个strMsg, 接收方只接收了strMsg，我的项目中已经够用了，你如果需要读msgID，还需要改一下。客户端代码请参考csdn上的原文自己写吧。
进程之间通讯的几种方法:
在Windows程序中，各个进程之间常常需要交换数据，进行数据通讯。常用的方法有
(1)使用内存映射文件
(2)通过...]]></description>
</item>
<item>
<title><![CDATA[Visual Studio.NET中如何设置Tabs键缩进的大小]]></title>
<link>/article/Csharp/others/2014/6285.html</link>
<author>Jimmy Zhang</author>
<category><![CDATA[C#其它]]></category>
<pubDate>2014-10-27 22:04:47</pubDate>
<description><![CDATA[在Visual Studio集成开发环境中已有的默认设置已经可以很好的支持我们进行开发了，如果有特殊要求自己可以进一步的进行定制。本文主要讲解如何设置tabs键按下时的缩进的大小，其具体方法如下。
第一步，打开Visual Studio，进入“工具”，“选项...”，如下图所示：

第二步，进入“文本编辑器”，“C#”，“制表符”，如下图所示，设置制表符。

第三步，点击“确定”，完成设置。]]></description>
</item>
<item>
<title><![CDATA[C＃中的checked、unchecked操作符]]></title>
<link>/article/Csharp/jichu/2014/6284.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2014-10-26 22:33:20</pubDate>
<description><![CDATA[在C#中checked和unchecked操作符用于控制检查整型算术运算时是否溢出。
下列运算参与了checked和unchecked检查（操作数均为整数）：
1） 预定义的＋＋和――一元运算符。
2） 预定义的－一元运算符。
3）预定义的＋、－、×、/等二元操作符。
4）从一种整型到另一种整型的显示数据转换。

当上述整型运算产生一个目标类型无法表示的大数时，可以有相应的处理方式：
1、使用checked
若运算是常量表达式，则产生编译错误：The Operation overflows at complie time in checked mode.
若运算是非常量表...]]></description>
</item>
<item>
<title><![CDATA[WinForm 下实现一个自动关闭的MessageBox]]></title>
<link>/article/Csharp/winform/2014/6239.html</link>
<author>eaglet</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2014-02-16 22:58:08</pubDate>
<description><![CDATA[在一些程序中，我们会发现弹出的的对话框会自动关闭，那么在C#的WinForm中是否也可以实现这种功能呢？ 下面转载了cnblogs.com eaglet的一篇文章，该文章中使用API函数来实现该功能。 WinForm中可以调用MessageBox.Show 来显示一个消息对话框，提示用户确认等操作。在有些应用中我们需要通过程序来自动关闭这个消息对话框而不是由用户点击确认按钮来关闭。然而.Net framework 没有为我们提供自动关闭MessageBox 的方法，要实现这个功能，我们需要使用Window API 来完成。 首先我们需要找到这个消息对话框的窗口句柄，一个比较简单的方法就是用 F...]]></description>
</item>
<item>
<title><![CDATA[一元运算符的重载]]></title>
<link>/article/Csharp/2014/6228.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#]]></category>
<pubDate>2014-01-16 10:32:23</pubDate>
<description><![CDATA[运算符重载允许为运算指定用户定义的运算符实现，重载的运算符可以是一元运算符（即只有一个操作数的运算符），也可以是二元操作符（即有两个操作数的运算符）。本文中暂时介绍一元运算符重载的方法。
可重载的一元运算符有：
+ - ! ~ ++ -- true false
一元运算符 true 和 false 要求成对的声明。如果类只声明了这两个运算符的其中一个而没有声明另一个，将发生编译时错误。
另外需要注意的是，重载时只能对已有的运算符进行重载，不能创造新的运算符。
一元运算符重载的语法格式如下：
public static 类类型 operator 要重载的一元运算符(类类型 变量名称)...]]></description>
</item>
<item>
<title><![CDATA[C#中静态变量与静态方法的使用]]></title>
<link>/article/Csharp/jichu/2013/6203.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-23 20:28:02</pubDate>
<description><![CDATA[1．静态变量
在C#程序中，没有全局变量的概念，这意味着所有的成员变量只有该类的实例才能操作这些数据，这起到了“信息隐藏”的作用。但有些时候，这样做却不是个明智的选择。
假设我们要定义一个图书类，要求该类能保存图书的数量，即每增加一本图书（定义一个实例），图书的数量应该加1。如果没有静态变量，我们需要将图书的数量保存在每本图书（实例）里，然而，这样的变量要在不同图书（实例）里重复存储，图书（实例）数量少的话，我们还能接受，如果图书（实例）数量较多的话，比如成千上万，我们无法想象这要造成多少资源（如内存、磁盘空间）的浪费，更让人无法忍受的是：因为图书（实例）的数量要保存在每本图书（实例）里，...]]></description>
</item>
<item>
<title><![CDATA[定义类及输出型参数求100~200之间的奇数和与偶数和]]></title>
<link>/article/Csharp/jichu/2013/6202.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-23 19:36:46</pubDate>
<description><![CDATA[在本站曾经有两篇文中分别实现在主方法中直接求1~50之间的奇数和与偶数和以及在某个类中定义方法来计算并输出。
本文在此基础上继续探讨在类中定义带输出型参数的方法来解决本题。具体思路如下：
（1）在类EvenOdd中定义循环的开始值和结束值；
（2）在类的构造方法中由键盘输入开始值及结束值，如果输入有误，则提示输入错误，则自动进入下一轮输入，循环直到两个数输入正确为止；
（3）在类中定义求奇数和与偶数和的方法EvenOddSum，其带有两个输出型参数even和odd，用于分别带出其偶数和与奇数和；
（4）在测试类Test中定义主方法，定义类EvenOdd的实例和两个整型变量，用于接收E...]]></description>
</item>
<item>
<title><![CDATA[C#中分别输出100~200之间的奇数和与偶数和]]></title>
<link>/article/Csharp/jichu/2013/6198.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-16 09:40:13</pubDate>
<description><![CDATA[本站中已有一个案例是求1-50之间的奇数之和与偶数之和，在那个文章中，主要是在程序中的主方法中实现的（详见：C#习题：编程计算1-50之间的奇数之和及偶数之和），而本文准备定义一个类，在该类中的方法成员中实现。
具体算法是，在EvenOdd类中定义两个字段成员，分别用来表示计算奇偶数区间的开始数字和结束数字，并在类的构造函数中对其初始化，在EvenOddSum方法成员中使用for循环计算出奇数和与偶数和并输出，并在定义的主方法中定义EvenOdd类的实例进行测试。
实现的源代码如下：
using System;
namespace evenodd1
&#123;
 class Test
 ...]]></description>
</item>
<item>
<title><![CDATA[使用三元操作符求两个数的最大值]]></title>
<link>/article/Csharp/jichu/2013/6196.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-14 21:58:45</pubDate>
<description><![CDATA[本案例演示了C#中三元运算符“?:&quot;的使用方法。
?:运算符是C#中唯一一个三元运算符，即其需要三个操作数参与运算；其格式为：
表达式1？表达式2:表达式3;
一般表达式1为逻辑表达式，当该表达式值为真时，整个表达式的最后运算结果为表达式2的值，否则为表达式3的值。
本案例通过求两个数的最大值来演示其具体用法。 
源代码如下：
using System;

namespace TiaoJianBiaoDaShi
&#123;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
  Console.Write(&quot;请输入第一...]]></description>
</item>
<item>
<title><![CDATA[C#常量的定义与使用：求圆周长与面积]]></title>
<link>/article/Csharp/jichu/2013/6195.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-14 21:51:59</pubDate>
<description><![CDATA[本案例演示了常量的定义与使用方法。
常量是在程序运行过程中其值不能被改变的量。常量在定义时必须初始化。常量属于隐式静态成员，不能通过类的实例调用，只能使用类名直接调用。
其定义语法格式为：
[访问修饰符] const 数据类型 常量名称 = 初始值;
本案例通过求圆的周长与面积；来演示常量的基本使用方法。
 
源程序如下所示：
using System;

namespace Constant
&#123;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
  const double PI = 3.14159265...]]></description>
</item>
<item>
<title><![CDATA[C#中ToString方法的使用]]></title>
<link>/article/Csharp/2013/6191.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#]]></category>
<pubDate>2013-10-13 08:18:13</pubDate>
<description><![CDATA[在C#中可以将其他数据类型转换成相应的字符串，因为该方法在基类类型object定义，可以在其它类型当中进行重写，所以在任何数据类型当中都可以使用该方法。
本文主要讲解了其在数值类型和日期时间类型当中的使用方法。
本案例的目的是使学生掌握其他数据类型转换为字符串并对输出格式进行控制的方法。
源代码如下：

using System;

namespace ToStr
&#123;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
  int iNum = 23;
  string s1 = iNum.ToString(&quot;...]]></description>
</item>
<item>
<title><![CDATA[C#数据类型转换方法]]></title>
<link>/article/Csharp/jichu/2013/6190.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-13 08:02:58</pubDate>
<description><![CDATA[C#中提供了多种数据类型转换方法，本案例主要讲解强制转换的方法。
本案例演示了C#中数据类型转换的常用方法。
程序源代码如下：


using System;

namespace DataConverte
&#123;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
  string str = &quot;1234&quot;;
  //下面的语句无法实现转换
  //int iNum1 = (int)str;
  int iNum2 = int.Parse(str);
  int iNum3 = Convert.ToInt3...]]></description>
</item>
<item>
<title><![CDATA[C#中枚举类型Flags标志的应用]]></title>
<link>/article/Csharp/jichu/2013/6186.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-10 22:11:14</pubDate>
<description><![CDATA[C# 中的枚举在通常情况下，只能表示单一的事务，如果表示多个并列，则需在定义是加Flags标志，下面就是关于这种用法，通过添加Flags，使枚举类型能够像位那样去操作。
源代码如下：
using System;

namespace EnumTypeBasic
&#123;
 [Flags]
 enum MyColor
 &#123;
 White,
 Black,
 Red,
 Pink=4,
 Yellow=8,
 Gray=16,
 Silver=32
 &#125;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
...]]></description>
</item>
<item>
<title><![CDATA[英文大小写字母相互转换的方法]]></title>
<link>/article/Csharp/jichu/2013/6182.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-02 06:08:38</pubDate>
<description><![CDATA[本案例的目的是使学生掌握大小写字母相互转换的算法，其原理是使用了字符类型和整数类型可以相互转换的知识。
在C#中，英文字母是以Unicode码（2个字节）存储在内存中，Unicode码是一个无符号整型数据，这样，其可以直接转换为ushort类型，而ushort类型又可以自动转换为int类型。大写字母的Unicode码比小写字母的Unicode码小32，反过来，小写字母的Unicode码比相应的大写字母大32，利用这一原理可以实现大小写英文字母的相互转换。
其源代码如下：

using System;

namespace UpperAndLower
&#123;
 class Progr...]]></description>
</item>
<item>
<title><![CDATA[char数据类型与整数据类型的转换]]></title>
<link>/article/Csharp/jichu/2013/6181.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-02 06:03:10</pubDate>
<description><![CDATA[char数据类型可以自动向整数类型转换，而整数类型向字符char转换需要强制转换。下面这个例子演示了char类型和整数类型进行算术运算的情况.
源代码如下：

using System;

namespace CharAndInt
&#123;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
  char ch1 = &#39;A&#39;;
  int num = 66;
  int num1 = num + ch1;
  char num2 = (char)num;
  Console.WriteLine(&quot;num1 = &#123;0...]]></description>
</item>
<item>
<title><![CDATA[C#数据类型：枚举类型的定义与使用]]></title>
<link>/article/Csharp/jichu/2013/6180.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-01 22:45:46</pubDate>
<description><![CDATA[本案例的目的是使学生掌握枚举类型enum的定义与使用方法。
案例源代码如下：

using System;

namespace EnumType
&#123;
 enum Color
 &#123;
 White, Gray, Green, Red, Yellow, Brown
 &#125;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
  Color c1;
  Console.WriteLine(&quot;请选择你喜欢的颜色：&quot;);
  Console.WriteLine(&quot;0:白色,1:灰色,2:绿色,3:红色,4:黄色,5:...]]></description>
</item>
<item>
<title><![CDATA[C#中转义字符的作用及使用方法]]></title>
<link>/article/Csharp/jichu/2013/6179.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-01 22:42:45</pubDate>
<description><![CDATA[本案例的目的是使学生掌握C#中转义字符的使用方法及作用。
C#中有些字符需要使用转义字符来实现输出，其使用“\&quot;引领。
本案例源代码如下：
using System;

namespace EscapeCharacter
&#123;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
 char ch1 = &#39;\&#39;&#39;;
 char ch2 = &#39;\&quot;&#39;;
 char ch3 = &#39;\xff&#39;;

 string s1 = &quot;\aI Love \nBeiJing,\tYou Love \nShangHai.&quot;;
 s...]]></description>
</item>
<item>
<title><![CDATA[C#数据类型：char类型的使用]]></title>
<link>/article/Csharp/jichu/2013/6178.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-10-01 22:36:58</pubDate>
<description><![CDATA[本案例的目的是使学生掌握char数据类型的使用方法。
char数据类型以UniCode存储一个字符，其占2个字节，可以存储任何合法的一个字符。
char数据类型需使用两个英文半角的单引号(&#39;)将值引起来，即 定义方法为 ：char ch = &#39;A&#39;;
char数据类型不能包含两个或以上的字符，也不允许存储空字符，即没有任何值的情况（与存储空格不同）
有些特殊字符需借助转义字符，详见后面的案例。
本案例源代码如下：
using System;

namespace CharType
&#123;
 class Program
 &#123;
 static void Main(string[...]]></description>
</item>
<item>
<title><![CDATA[C#数据类型：bool类型的使用]]></title>
<link>/article/Csharp/jichu/2013/6175.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-09-28 06:13:44</pubDate>
<description><![CDATA[本文演示了C#中bool数据类型的使用方法。
bool数据类型是值类型，其有两种值：true和false，分别代表逻辑真和逻辑假。
在逻辑运算中，两个bool类型的数据相与时，如果两个数据都为true，则运算结果为真，只要一个为假（false），则运算结果为假；
两个bool类型的数据相或时，如果两个数据都为false时，其运算结果为false，只要一个为真，则运算结果为真；
两个bool类型的数据相异或时，如果两个数据取不同值时，其运算结果为true，只要两个数据取值相同，则结果为假。
下面的例子中，简单演示了bool数据类型的定义、和赋值。
案例源代码如下：
using Sy...]]></description>
</item>
<item>
<title><![CDATA[C#数据类型：decimal数据类型的使用]]></title>
<link>/article/Csharp/jichu/2013/6174.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-09-28 05:53:30</pubDate>
<description><![CDATA[本文目的是使读者掌握decimal数据类型的定义、赋值和初始化的方法。
C#中的decimal数据类型的数值后必须有后缀“M”或“m”，否则编译时将给出如下的错误信息：
错误 不能隐式地将 Double 类型转换为“decimal”类型；请使用“M”后缀创建此类型
造成这个问题的原因主要是，在C#中，小数默认以双精度类型（double）进行存储的，而默认情况下，double无法完成到decimal类型的转换，需要指定后缀来完成。
同时，通过本案例可以进一步学习输出格式控制的方法。 
源代码如下：
using System;

namespace DecimalType
&#123;
...]]></description>
</item>
<item>
<title><![CDATA[C#数据类型：double类型的使用]]></title>
<link>/article/Csharp/jichu/2013/6173.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-09-25 20:40:01</pubDate>
<description><![CDATA[本案例的目的是使学生掌握double数据类型的定义及使用方法：
double数据类型在初始化或赋值时，其数值后面可以带“D”或&quot;d&quot;，也可以不带，因为小数默认为double类型。
同时，通过本案例的学习，学生可以进一步了解输出格式的控制方法。
 
 
源代码如下：
using System;

namespace DoubleType
&#123;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
 double d1 = 23.12; //后面可以不加后缀“D”或“d”
 double d2 = 33.312D; ...]]></description>
</item>
<item>
<title><![CDATA[C#数据类型：float类型的使用方法]]></title>
<link>/article/Csharp/jichu/2013/6172.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-09-25 20:06:52</pubDate>
<description><![CDATA[本文的目的是读者掌握float型数据在初始化和赋值时因注意的问题，即应在数据的后面加“f”或“F”，这是因为浮点数默认为double类型的数据。否则将会出现下面的错误：
错误 不能隐式地将 Double 类型转换为“float”类型；请使用“F”后缀创建此类型
同时，该案例还演示了浮点数的输出格式。
 
 
 
using System;

namespace FloatType
&#123;
 class Program
 &#123;
 static void Main( )
 &#123;
 //使用下面的格式定义float类型的数据将会产生一个错误
 float f1 = 2.3;
...]]></description>
</item>
<item>
<title><![CDATA[C#中获取数值数据类型的取值范围]]></title>
<link>/article/Csharp/jichu/2013/6166.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-08-03 17:20:37</pubDate>
<description><![CDATA[对于值类型来说，C#中每种数据类型都有自己的取值范围，即能够存储值的最大值和最小值。借助数据类型提供的两个属性MaxValue和MinValue可以轻松地获取该数据类型可以存储的最大值和最小值，下面是一个例子：
using System;

namespace DataTypeValueRange
&#123;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
  Console.WriteLine(&quot;int:最大值&#123;0&#125;，最小值&#123;1&#125;&quot;, int.MaxValue, int.MinValue);
  Console.Writ...]]></description>
</item>
<item>
<title><![CDATA[C#习题：将从键盘输入的成绩转换成等级制成绩]]></title>
<link>/article/Csharp/jichu/2013/6155.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-07-27 05:34:49</pubDate>
<description><![CDATA[题目要求：从键盘输入学生的百分制成绩，换算成相应的等级制成绩。
本题可以借助switch...case语句实现。
具体思路为：首先将输入的分数除以10，将其转化到0-10之间，然后使用swith...case判断其范围，全部源代码如下：
using System;

namespace swcase
&#123;
 class Program
 &#123;
 static void Main(string[] args)
 &#123;
  Console.WriteLine(&quot;请输入学生的百分制成绩：&quot;);
  int iScore = int.Parse(Console.ReadLine())...]]></description>
</item>
<item>
<title><![CDATA[C#中运用TextBox控件的Enter和Leave事件实现编辑时背景颜色的变化]]></title>
<link>/article/Csharp/winform/2013/6151.html</link>
<author>biye5u.com</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2013-07-23 09:52:41</pubDate>
<description><![CDATA[我们在上网时经常看到一些需要你填写内容的文本框当获得焦点时会改变颜色，当失去焦点时又恢复原色；在一些窗体应用程序中也有类似的应用。那么，在C#窗体应用程序中能不能实现该效果呢？当然能。本文将借助TextBox控件的Enter和Leave事件实现这一效果。
1、问题描述
TextBox（文本框）的默认背景色为白色，在程序运行过程中，文本框获得焦点后将改变颜色，失去焦点后恢复原来的白色。
2、实现方法
（1）在VS Studio中新建Windows应用程序，分别添加两个Label控件、两个TextBox控件及两个Button控件，将两个Label控件的Text属性分别修改为“学号”和“姓名...]]></description>
</item>
<item>
<title><![CDATA[C#控件之TextBox的使用方法]]></title>
<link>/article/Csharp/winform/2013/6143.html</link>
<author>biye5u.com</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2013-07-19 13:50:32</pubDate>
<description><![CDATA[1、TextBox控件简介
C#中的TextBox控件常用于在窗体中接收用户的输入或显示文本，利用该控件可以让用户输入文本、密码等信息，同时也可以控制用户输入内容的长度、类型等
下图中类型名称后的控件 即文本框控件。

2、TextBox控件的常用属性
（1）BackColor：设置背景色；
（2）BorderStyle：设置TextBox边框的类型，为枚举值，其值有三种：None(没有边框）、FixedSingle(单边边框）、Fixed3D（立体感的边框）；
（3）Font：设置TextBox的字体，包括字体名称、大小、是否加粗、是否斜体、是否有下划线等；
（4）ForeC...]]></description>
</item>
<item>
<title><![CDATA[C#控件之Label控件的使用]]></title>
<link>/article/Csharp/winform/2013/6141.html</link>
<author>biye5u.com</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2013-07-17 12:04:28</pubDate>
<description><![CDATA[1、Label控件简介
C#中的Label控件常用于在窗体中显示简短的文本。用户不可以直接编辑Label控件中的文本。其常用于以下几种情况：
（1）与TextBox控件配合使用
与TextBox控件使用时，Label控件主要起到提示性作用，如下图所示：

图中的“类型名称”、“资助标准”、“实际金额”及“备注信息”是使用Label控件创建的。
（2）说明性文本
如在用户填写某个表格时，其开头可能有些填写提示，这些提示性的文字在C#中也可以由Label控件来完成，如下图所示：

图中的红色字体部分也是使用Label控件来创建的。
2、Label控件的创建
Label控件在创...]]></description>
</item>
<item>
<title><![CDATA[执行语句“sum=f（4）+f（2）;”后，sum的值为多少]]></title>
<link>/article/Csharp/jichu/2013/6131.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-06-23 15:40:01</pubDate>
<description><![CDATA[函数f定义如下，执行语句“sum=f（4）+f（2）;”后，sum的值应为( )。
为什么答案选C呢？
int f(int m)
&#123;
 static int i=0;
 int s=0;
 for(;i&lt;=m;i++)
 s+=i;
 return s;
&#125;
　A、13
　B、16
　C、10
　D、8
解答：
因为i为静态变量，静态变量的值从第一次使用而创建，到程序结束时才释放内存，因为在调用f(4)后，i已经为5，当在调用f(2)时，由于i&lt;=m的条件已经为假，故不再执行，因此最终为10即C，]]></description>
</item>
<item>
<title><![CDATA[C#数组之一维数组]]></title>
<link>/article/Csharp/jichu/2013/6110.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-06-09 10:05:17</pubDate>
<description><![CDATA[数组是一种常用的数据类型，且属于引用类型。它是由一组相同数据类型的元素构成的。在C#语言的类型系统中，数组由抽象类System.Array派生而来的。在内存中，数组占用一块连续的内存，元素按顺序连续存放在一起，数组中每一个单独的元素并没有自己的名字，但是可以通过其位置（索引）来进行访问或修改。
在C#中，数组元素的索引是从0开始的，即对于有N个元素的数组，其索引范围是从0~N-1。
在这里重点讨论一下一位数组的使用方法。
1.一维数组的声明
数组声明时，主要声明数组的名称和所包含的元素类型，一般格式如下：
数组类型[] 数组名;
数组类型，可以使C#中任意有效的数据类型，包括类；数...]]></description>
</item>
<item>
<title><![CDATA[C#中的属性]]></title>
<link>/article/Csharp/jichu/2013/6109.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-06-09 09:47:34</pubDate>
<description><![CDATA[类在设计时，其字段成员一般被声明为私有的，如果想读取或设置其值，需要提供这样的方法，而在C#中，使用属性更充分体现了对象的封装性，让用户不直接操作类的相关数据，而是通过其提供的访问器进行访问。
属性可以是类、结构和接口的成员。其定义的形式为：
访问修饰符 数据类型 标识符
&#123;
访问器声明;
&#125;
访问修饰符可以是new，static，virtual，absctract，override和public，protected，private，internal的合法组合。
访问器有get访问器和set访问器两种，其声明的格式如下：
get
&#123;
return 要访问的成员;
&#125;
s...]]></description>
</item>
<item>
<title><![CDATA[消除C#中接口的二义性]]></title>
<link>/article/Csharp/jichu/2013/6108.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2013-06-09 09:28:20</pubDate>
<description><![CDATA[在本站中的另外两篇文章里比较详细的介绍了接口的含义及定义和实现方法，本文中重点介绍由于接口的多继承而导致的二义性问题。
另外两篇文章的连接：
（1）Ｃ＃中的接口
（2）Ｃ＃中接口的使用方法
在C#中不支持多重继承的一个重要原因就是命名冲突问题，命名冲突会导致二义性。C#虽然不支持类的多重继承，但支持接口的多重继承，这同样会导致二义性的产生。下面的例子将演示二义性的产生的原因及消除二义性的一个办法：
using System;
interface Donkey
&#123;
 void Run();
&#125;
interface Horse
&#123;
 void Run();
&#125;
clas...]]></description>
</item>
<item>
<title><![CDATA[使用C#实现顺序队列]]></title>
<link>/article/Csharp/methprog/2013/6074.html</link>
<author>本站</author>
<category><![CDATA[算法设计]]></category>
<pubDate>2013-05-24 06:26:12</pubDate>
<description><![CDATA[队列(Queue)是插入操作限定在表的尾部而其它操作限定在表的头部进行的线性表。把进行插入操作的表尾称为队尾(Rear)，把进行其它操作的头部称为队头(Front)。当对列中没有数据元素时称为空对列(Empty Queue)。
队列通常记为：Q= (a1,a2,…,an)，a1为队头元素，an为队尾元素。元素按照a1,a2,…,an的次序依次入队，出队的次序与入队相同，即a1第一个出队，an最后一个出队。所以，对列的操作是按照先进先出(First In First Out)或后进后出( Last In Last Out)的原则进行的，因此，队列又称为FIFO表或LILO表。
队列的常用操作...]]></description>
</item>
<item>
<title><![CDATA[C#中编程实现禁止对DataGridView进行排序]]></title>
<link>/article/Csharp/dbprog/2013/6034.html</link>
<author>biye5u.com</author>
<category><![CDATA[数据库编程]]></category>
<pubDate>2013-01-20 18:21:59</pubDate>
<description><![CDATA[有时，我们需要禁止用户通过点击DataGridView的头部对数据重新排序，这可以借助于DataGridView中的Columns属性来实现，打开Columns属性编辑框，选中你想要禁止排序的列，然后在右侧列属性中找到SortMode，将其值设置为NotSortable即可。如下图所示：

如果想实现用户点击任何列都不能排序，则需要选择每个列执行相同的操作。有时这显得比较麻烦。我们可以在程序中使用代码来控制。
假设要进行操作的DataGridView的名称为dataGridView1，则下面的代码可以实现对所有的列禁止排序，尤其是程序中绑定数据源的情况，显得更加方便：
for (int...]]></description>
</item>
<item>
<title><![CDATA[C#Windows应用程序中打开网址的方法]]></title>
<link>/article/Csharp/superapp/2012/5995.html</link>
<author>不详</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2012-11-22 23:20:16</pubDate>
<description><![CDATA[ 在C#的Windows应用程序中打开网址需使用System.Diagnostics命名空间中的Process类，下面是源代码：
System.Diagnostics.Process.Start(&quot;http://www.biye5u.com&quot;);
或者使用下面的形式：
System.Diagnostics.Process.Start(@&quot;C:\Program Files\Internet Explorer\IEXPLORE.EXE&quot;,&quot;http://www.biye5u.com&quot;);
上面两种形式中，第一种是以默认浏览器打开指定的网址
第二种是以指定的IE浏览器打开网址 。]]></description>
</item>
<item>
<title><![CDATA[C#数据库编程之连接对象Connection使用详解]]></title>
<link>/article/Csharp/dbprog/2012/5990.html</link>
<author>biye5u.com</author>
<category><![CDATA[数据库编程]]></category>
<pubDate>2012-11-17 20:15:28</pubDate>
<description><![CDATA[在C#数据库编程中，Connection对象用来连接数据源，针对不同的数据库连接模式，Connection有以下三种形式：
（1）SqlConnection 该对象是专为连接Sql Server数据库而设计的
（2）OleDbConnection 该对象可以连接任何类型的数据库
（3）OdbcConnection
在具体学习内容之前，首先看一个例子，通过这个例子首先了解以下C#编写数据库应用程序的方法。
本例是从Access数据库中将学生的信息读取出来并打印在屏幕中。
程序的源代码如下：
//首先引入需要的命名空间
using System;
using System.Dat...]]></description>
</item>
<item>
<title><![CDATA[C#中的自减（－－）运算符]]></title>
<link>/article/Csharp/jichu/2012/5985.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-11-11 20:25:13</pubDate>
<description><![CDATA[C#中的自减运算符（--）是使操作数减 1。自减运算符可以出现在操作数前边，也可以放在操作数后面。如下面所示：
variable --; //放在后面
-- variable; //放在前面
放在操作数前面的称之为前缀自减。其运算结果为操作数减1“之后”的值。
放在操作数后边的为后缀自减，其运算的结果是操作数减1“之前”的值。
下面用一个例子来说明一下：
// C#中的自减运算符
using System;
class Class1
&#123;
 static void Main() 
 &#123;
 double x;
 x = 1.5;
 Console.WriteLine(-...]]></description>
</item>
<item>
<title><![CDATA[C#中重载类的构造方法]]></title>
<link>/article/Csharp/jichu/2012/5981.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-11-04 22:25:42</pubDate>
<description><![CDATA[构造方法是在创建类的实例时负责初始化工作的操作方法。在C#中，类的构造方法一般被定义为公有的(public)，构造方法没有返回类型，也不能为空型(void)，同时，构造方法的名称与类的名称相同；类的构造方法可以包含任何数量的参数，从而使创建类变得更为灵活。
在面向对象程序设计中，将具有相同名称，但参数的数据类型、参数个数不同的方法称为方法的重载。构造方法通过改变参数的数据类型、参数的个数同样可以实现重载。
下面举一个例子来说明这个问题：
这个例子演示了一个教师类（Teacher），该类具有两个字段成员_name(教师姓名）和_age（教师年龄），类的三个构造方法分别分别在给出不同参数时给...]]></description>
</item>
<item>
<title><![CDATA[C#习题：Dog类的定义与使用]]></title>
<link>/article/Csharp/jichu/2012/5980.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-11-04 21:24:34</pubDate>
<description><![CDATA[本习题要求创建一个Dog类，类中要包含Dog的年龄、体重和毛色三个字段，以及对三个字段访问的属性，并定义一个方法输出Dog的相关信息。同时，要对该类进行测试。
习题分析：本例主要是考察学生以下知识点：
（1）类的定义；
（2）类字段成员的定义；
（3）类属性成员的定义；
（4）类方法成员的定义；
（5）类的实例化；
（6）类成员的调用；
本文在给出具体的解决方法的同时，定义了枚举类型来表示Dog的毛色，下面是具体的解决方法：
using System;

namespace Dog
&#123;
 class Dog
 &#123;
 int iage; //狗的年龄
 float...]]></description>
</item>
<item>
<title><![CDATA[使用.net提供的csc命令编译C#程序]]></title>
<link>/article/Csharp/jichu/2012/5955.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-10-22 23:44:06</pubDate>
<description><![CDATA[visual studio集成开发环境可以大大提高我们的编程效率，但如果你没有安装这个集成开发环境或者喜欢在命令行下编辑编译程序的话，你可以使用其提供的CSC命令来编译C#程序。当然，前提你正确安装了Microsoft.Net Framework SDK。
下面介绍一下这个命令的具体使用方式。
首先，启动命令行程序，进入源程序文件所在的目录，敲入下面的命令：
csc HelloWorld.cs
上面HelloWorld.cs是你的源程序文件名称，如果没有错误，则HelloWorld.cs将被将被编译、运行，屏幕上将输出程序中规定的内容。
在使用csc命令时，你可以使用该命令的编译选项...]]></description>
</item>
<item>
<title><![CDATA[C#中的常量]]></title>
<link>/article/Csharp/jichu/2012/5950.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-10-21 10:28:54</pubDate>
<description><![CDATA[常量是指在程序运行过程中，其值不能被改变的量，在C#语言中，其定义方法如下：
const 数据类型 变量名 = 常量值;
即，常量使用const关键字定义，在定义的同时必须初始化。常量与变量不同，其必须使用类名调用而不能使用类的实例来调用，即其为静态的。
我们在编程时，有些量在整个程序运行过程中不允许改变，如圆周率&pi;的值，我们就可以将其定义为常量：
public const double PI = 3.1415926;
这样，在程序的其它地方就可以使用PI的值了。同时，使用常量还能给程序带来修改的方便，如某个程序是有关求图形面积或体积的，可能开始使用的圆周率为3.14，后来又想...]]></description>
</item>
<item>
<title><![CDATA[C#的标识符]]></title>
<link>/article/Csharp/jichu/2012/5949.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-10-21 09:50:56</pubDate>
<description><![CDATA[标识符是用户用来定义变量、常量、类等名称的字符。在C#中，标识符主要分为关键字、类型名、变量名、常量名、方法名和命名空间的名称。C#中规定合法的标识符命名规则为：
（1）标识符合法的字符为 ：26个大小写字母，0-9之间的10个数字以及下划线；
（2）开头字符只能是字母或者下划线，不能是数字；
（3）下可以使用@作为开始字符。
C#在标识符的命名风格上主要有以下几种：
（1）Pascal命名风格
C#对于类名称、方法名称、属性名称、事件名称使用该命名风格，即标识符中的每个单词的开头字母要大写，如：
class MiddleSchoolStudent
&#123;
 public voi...]]></description>
</item>
<item>
<title><![CDATA[C#绘图：在屏幕上画一条直线]]></title>
<link>/article/Csharp/mutimedia/2012/5814.html</link>
<author>biye5u.com</author>
<category><![CDATA[多媒体编程]]></category>
<pubDate>2012-08-19 12:07:10</pubDate>
<description><![CDATA[本例演示如何在屏幕上画一条直线。
程序设计界面如下：

设计时，4个文本框从上到下，从左到右已经重新命名为txtX1,txtY1,txtX2,txtY2,界面下面是一个Panel控件，并将其背景色修改为白色。
按钮的Click事件代码如下：
  Graphics g = panel1.CreateGraphics();
  int x1, x2, y1, y2;
  x1 = Convert.ToInt32(txtX1.Text);
  x2 = Convert.ToInt32(txtX2.Text);
  y1 = Convert.ToInt32(txtY1.Text);
...]]></description>
</item>
<item>
<title><![CDATA[设计模式之Singleton单态模式]]></title>
<link>/article/Csharp/superapp/2012/5786.html</link>
<author>佚名</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2012-08-08 14:57:57</pubDate>
<description><![CDATA[Singleton模式主要作用是保证在应用程序中，一个类只有一个实例存在。在很多操作中，比如建立目录 数据库连接都需要这样的单线程操作。还有, singleton能够被状态化; 这样，多个单态类在一起就可以作为一个状态仓库一样向外提供服务，比如，你要论坛中的帖子计数器，每次浏览一次需要计数，单态类能否保持住这个计数，并且能synchronize的安全自动加1，如果你要把这个数字永久保存到数据库，你可以在不修改单态接口的情况下方便的做到。另外方面，Singleton也能够被无状态化。提供工具性质的功能，
1、模式分类
从目的来看主要有：
（1）创建型（Creational）模式：负责对象创...]]></description>
</item>
<item>
<title><![CDATA[C#中创建程序快捷方式的方法]]></title>
<link>/article/Csharp/others/2012/5749.html</link>
<author>佚名</author>
<category><![CDATA[C#其它]]></category>
<pubDate>2012-07-15 17:36:34</pubDate>
<description><![CDATA[创建快捷方式对于绝大多数 Windows 用户来说都是小菜一碟了,然而,这项工作却为程序员带来不少麻烦.
.NET 没有提供简便直接的创建快捷方式的方法,那么在 .NET 中我们如何为应用程序创建快捷方式呢？
1. 快捷方式文件
快捷方式实质上是一个扩展名为 .LNK 的文件.右击一个快捷方式文件并选择属性,跳到快捷方式选项卡,你可以看到一个快捷方式包含如下数据：
&middot;快捷方式的名字
&middot;快捷方式所指向的目标所在的位置
&middot;快捷方式所指向的目标的工作目录
&middot;激活该快捷方式的热键
&middot;快捷方式所指向的目标运行时的窗口风...]]></description>
</item>
<item>
<title><![CDATA[WebForm中调用WinForm界面的方法简介]]></title>
<link>/article/Csharp/winform/2012/5710.html</link>
<author>佚名</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2012-06-28 06:08:03</pubDate>
<description><![CDATA[CS架构的winForm与BS架构的webForm是不能直接通信的，那么真的就一点儿办法都没了吗？其实不然。
看了网上很多资料，我总结出有两种方式可以实现。
1）首先客户端需要用注册表写入协议，通过协议去找已经安装在客户端的winForm的exe文件，这时可以给窗体传入参数，例如 “helloworld://你个猪头”， helloworld是协议，后面”你个猪头“是传入的字符串。当然winForm的main方法写法也有不同，需要得到参数（也可以不要参数，如果不需传参，直接调用）
 /// &lt;summary&gt;
 /// 应用程序的主入口点。
 /// &lt;/summary&gt;

 [...]]></description>
</item>
<item>
<title><![CDATA[C#中的do...while循环]]></title>
<link>/article/Csharp/jichu/2012/5685.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-21 12:10:50</pubDate>
<description><![CDATA[do...while循环与while循环不同，它首先执行一次循环体，然后判断条件，属于直到型循环，即直到条件为假时退出循环体，执行循环后面的语句，其语法结构如下：
do
&#123;
循环体语句;
&#125;while(表达式);
其中：表达式可以是关系表达式、逻辑表达式或其它值为“真”或“假”的表达式，其用于使循环进行下去的条件。
循环体语句可以是简单语句或复合语句。
其执行过程为：
首先执行一次循环体语句；然后测试循环进行的条件，即判断表达式的计算结果，如果结果为“真”(true)则重复执行循环体语句；直到表达式的结果值为“假”（false）时，退出循环，执行do…while循环后面的语句。...]]></description>
</item>
<item>
<title><![CDATA[C#中StringComparison 枚举类型简介]]></title>
<link>/article/Csharp/jichu/2012/5678.html</link>
<author>Microsoft</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-18 02:49:27</pubDate>
<description><![CDATA[StringComparison 枚举用于指定字符串比较是使用当前区域还是固定区域、使用字词还是序号排序规则以及是否区分大小写。
StringComparison枚举值有如下几种情况：
（1）CurrentCulture 使用区域敏感排序规则和当前区域比较字符串。
（2）CurrentCultureIgnoreCase 使用区域敏感排序规则、当前区域来比较字符串，同时忽略被比较字符串的大小写。
（3）InvariantCulture 使用区域敏感排序规则和固定区域比较字符串。
（4）InvariantCultureIgnoreCase 使用区域敏感排序规则、固定区域来比较字符串，同时...]]></description>
</item>
<item>
<title><![CDATA[C#中指定起始位置、搜索字符数和搜索类型的IndexOf方法]]></title>
<link>/article/Csharp/jichu/2012/5677.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-18 02:47:46</pubDate>
<description><![CDATA[C#中的IndexOf方法用于搜索指定的字符串在当前 String 对象中的第一个匹配项的索引。 这个方法有多种重载形式，本文主要讲解指定搜索起始位置、搜索字符数量和搜索类型的IndexOf方法，方法原型如下：
public int IndexOf(string value, int startIndex,int count,StringComparison comparisonType)
这个IndexOf方法有四个参数：
第一个参数value用来指定要搜索的子字符串；第二个参数startIndex用来指定当前字符串中的起始搜索位置；第三个参数count用来指定要搜索的当前字符串中的字...]]></description>
</item>
<item>
<title><![CDATA[C#指定搜索开始位置和搜索类型的字符串搜索函数IndexOf 方法]]></title>
<link>/article/Csharp/jichu/2012/5676.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-18 02:46:57</pubDate>
<description><![CDATA[字符串搜索函数IndexOf可以指定开始搜索的位置及是否忽略大小写功能，其函数原型如下：
public int IndexOf(string value,int startIndex,StringComparison comparisonType)
函数按照指定的开始位置和比较类型进行搜索字符串，如果找到，则返回字符串中第一个包含子串的位置。
函数包含三个参数，第一个参数value用来指定要搜索的子串，第二个参数startIndex用来指定开始搜索的位置，第三个参数comparisonType用来指定搜索的类型（关于搜索的类型，请参见StringComparison 枚举类型简介）
下...]]></description>
</item>
<item>
<title><![CDATA[C#中指定搜索位置和搜索字符数的字符串搜索函数IndexOf (string vlue, int startIndex, int count)]]></title>
<link>/article/Csharp/jichu/2012/5675.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-18 02:44:36</pubDate>
<description><![CDATA[我们在搜索一个字符串中是否包含一个指定的字符串时，可以指定被搜索字符串中的起始位置和要搜索的字符数，所涉及的函数原型如下：
public int IndexOf( string value, int startIndex, int count ) 
这个方法有三个参数，第一个参数value指定要搜索的字符串值，第二个参数startIndex指定搜索的起始位置，第三个参数count指定搜索的字符数。
其返回值有两种情况，如果搜索到了指定的字符串，则返回该字符串从0开始的位置值，否则返回-1。
下面是一个例子：
string str = &quot;翔宇亭IT乐园欢迎您。&quot;;
int iPos1...]]></description>
</item>
<item>
<title><![CDATA[C#中指定搜索起始位置和搜索字符数的字符搜索函数IndexOf]]></title>
<link>/article/Csharp/jichu/2012/5674.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-17 11:39:59</pubDate>
<description><![CDATA[我们在搜索一个字符串中是否包含一个指定的字符时，可以指定被搜索字符串中的起始位置，所涉及的函数原型如下：
public int IndexOf( char value, int startIndex, int count ) 
这个方法有三个参数，第一个参数指定要搜索的字符值，第二个参数指定搜索的起始位置，count指定搜索的字符数。
其返回值有两种情况，如果搜索到了指定的字符，则返回该字符从0开始的位置值，否则返回-1。
下面是一个例子：
string str = &quot;翔宇亭IT乐园欢迎您。&quot;;
int iPos1 = str.IndexOf(&#39;I&#39;, 2, 1);
int iP...]]></description>
</item>
<item>
<title><![CDATA[C#中指定字符串搜索类型的IndexOf方法]]></title>
<link>/article/Csharp/jichu/2012/5673.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-17 11:11:12</pubDate>
<description><![CDATA[有时，我们在查找一个字符串中是否包含一个指定的子字符串时，要对搜索的大小写等内容进行设置，这可以借助IndexOf方法的另外一种重载格式IndexOf(string value, StringComparison comparisonType)形式来进行。该方法的原型如下：
public int IndexOf( string value, StringComparison comparisonType ) 
该方法有两个参数，第一个参数value是要搜索的子字符串，参数comparisonType用来指定字符串的匹配类型。
comparisonType参数是一个枚举类型，其值有6种情况...]]></description>
</item>
<item>
<title><![CDATA[C#中字符串操作函数IndexOf(String, Int32)函数]]></title>
<link>/article/Csharp/jichu/2012/5672.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-17 10:39:54</pubDate>
<description><![CDATA[有时我们可能要判断一个字符串中是否要包含指定的字符串，或者是判断一个字符串从指定位置开始是否包含指定的子字符串，这分别可以借助IndexOf(string value)方法和IndexOf(string value, int startIndex)方法来实现。
IndexOf(string value)方法在前面的文章中已探讨（http://www.biye5u.comCsharp/jichu/2012/5669.html），本文重点探讨IndexOf(string value,int startIndex)的使用。
IndexOf(string value, int startIndex...]]></description>
</item>
<item>
<title><![CDATA[C#中字符串操作函数IndexOf(Char, Int32)的使用]]></title>
<link>/article/Csharp/jichu/2012/5671.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-17 10:19:14</pubDate>
<description><![CDATA[IndexOf(char value,int startIndex)函数是IndexOf重载函数形式之一，其从指定的startIndex位置开始查找指定的字符value，如果字符串中包含value值，则返回其第一次出现的位置（该位置从索引0开始）。该函数的原型为：
public int IndexOf( char value, int startIndex )
参数：
value就是要查找的字符，startIndex就是搜索的起始位置。
返回值：
该函数的返回值为整型(int)。如果找到该字符，则返回值为value 的从零开始的索引位置；如果未找到，则返回值为 -1。
此方法执行顺...]]></description>
</item>
<item>
<title><![CDATA[C#中字符串操作函数String.IndexOf (Char)方法]]></title>
<link>/article/Csharp/jichu/2012/5670.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-16 20:58:28</pubDate>
<description><![CDATA[报告指定 Unicode 字符在此字符串中的第一个匹配项的索引。其原型为：
public int IndexOf(char value)
参数value为要查找的 Unicode 字符。
返回值：如果找到该字符，则为 value 的从零开始的索引位置；如果未找到，则为 -1。
如：
string str = &quot;翔宇亭IT乐园。&quot;;
 int iPos = str.IndexOf(&#39;I&#39;);
其返回值为：3
同时，IndexOf方法还有其它8种重载形式：
（1）public int IndexOf(string value)
（2）public int IndexOf(cha...]]></description>
</item>
<item>
<title><![CDATA[C#中字符串操作函数IndexOf(string)的使用]]></title>
<link>/article/Csharp/jichu/2012/5669.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-16 20:38:53</pubDate>
<description><![CDATA[C#中字符串操作函数IndexOf()是用来查找字串中指定字符或字串首次出现的位置，返回其首次出现的索引值，方法原型如下：
public int IndexOf (string value)
参数value为要寻找的字符串值，返回值为整数类型，如果被查找的字符串中包含要查找的字符串value则返回其所在位置的索引（从0开始的索引值），否则返回-1。
如：
string str = &quot;翔宇亭IT乐园欢迎您。&quot;;
int iPos = str.IndexOf(&quot;IT&quot;);
则iPos的值为：3
再如：
string str = &quot;翔宇亭IT乐园欢迎您。&quot;;
int iPos = ...]]></description>
</item>
<item>
<title><![CDATA[C#中的if语句]]></title>
<link>/article/Csharp/jichu/2012/5646.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-08 08:03:48</pubDate>
<description><![CDATA[我们在编写程序时，有时需要根据不同的情况执行不同的语句（块），大多数语言可以使用if语句或switch语句来实现，本文首先介绍一下if语句的具体使用方法。
if语句用于分支选择中，当条件满足时，执行某些语句，主要有这么几种形式：
（1）只有一个if的语句
其语法格式如下：
if(判断条件)
&#123;
 要执行的语句
&#125;
如：
int i = 5;
if( i &gt; 0 )
 Console.WriteLine(&quot;&#123;0&#125;大于0.&quot;,i);
(2)if...else结构
其语法格式如下：
if(判断条件)
&#123;
 语句1；
&#125;
else
&#123;
 语句2；
&#125;
即判断...]]></description>
</item>
<item>
<title><![CDATA[C#中的while循环]]></title>
<link>/article/Csharp/jichu/2012/5644.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-07 06:41:38</pubDate>
<description><![CDATA[C#中的while循环是先验证一个条件，如果条件为真了，则执行一个语句块。其语法格式如下：
while(逻辑表达式)
&#123;
 相关语句;
&#125;
相关语句可以是任何有效的C#语句。在执行这些语句之前，逻辑表达式的值必须为真，即值应该为true.当执行完一次相关语句后，程序将再次判断逻辑表达式的值，如果表达式的值为假了，即值为false时，将不再执行循环语句块中的语句，转而执行后面的其它C#语句。
在执行循环语句块时，程序应能确认不断地改变循环条件的值，以在执行若干次循环后，逻辑表达式的值能变为假(false)，从而结束循环。否则，可能造成程序死循环。
下面使用一个例子来讲一下，whil...]]></description>
</item>
<item>
<title><![CDATA[C#中三元操作符?:的使用]]></title>
<link>/article/Csharp/jichu/2012/5634.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-06-03 22:47:51</pubDate>
<description><![CDATA[C#中三元操作符只有一个，即?:称之为条件操作符，其语法格式如下：
expression1?expresson2:expression3;
expression1一般为逻辑表达式，当其值为真时，则整个表达式的值为expression2的值，如果表达式1的值为假（false）的话，则整个表达式的值为表达式expression3的值。

从上面的叙述中，我们可以看出，它相当于一个if...else语句的使用，即：
if(expression1)
 expression2;
else
 expression3;
这个表达式在很多情况下是非常实用的。下面演示一下三元操作符?:在求最大...]]></description>
</item>
<item>
<title><![CDATA[C#中自己编写Dispose实现资源管理]]></title>
<link>/article/Csharp/others/2012/5579.html</link>
<author>不详</author>
<category><![CDATA[C#其它]]></category>
<pubDate>2012-05-16 05:00:18</pubDate>
<description><![CDATA[本文讲解的是你在建立包含内存以外资源的类型，特别是处置非内存资源的时候，如何编写自己的资源管理代码。
我们已经知道了处置那些占用非受控（unmanaged）资源的对象的重要性，现在应该编写资源管理代码来处置那些包含非内存资源的类型了。整个。NET框架组件都使用一个标准的模式来处理非内存资源。使用你建立的类型的用户也希望你遵循这个标准的模式。标准的处理模式的思想是这样的：当客户端记得的时候使用IDisposable接口释放你的非受控资源，当客户端忘记的时候防护性地使用终结器（finalizer）。它与垃圾收集器（Garbage Collector）一起工作，确保只在必要的时候该对象才受到与终结...]]></description>
</item>
<item>
<title><![CDATA[C# ToolTip控件如何使用]]></title>
<link>/article/Csharp/winform/2012/5567.html</link>
<author>佚名</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2012-05-13 09:59:23</pubDate>
<description><![CDATA[一、ToolTip信息提示框简介
C#中提供了信息提示框ToolTip有很多用处，可以提示控件或者用户自定义的属性信息，而且可以自动弹出或者用户指定弹出，也可以动画效果弹出。
二、ToolTip的使用方法
（1）鼠标移动到控件或指定的位置自动显示
ToolTip.SetToolTip 方法 ，注意相关参数的设置。
（2）ToolTip的动画效果
可以借助参数：AutoPopDelay，InitialDelay，ReshowDelay实现Tooltip的动画效果。
下面是一个具体的例子：
ToolTip toolTip1 = new ToolTip();
toolTip1.Au...]]></description>
</item>
<item>
<title><![CDATA[C#中像素与毫米之间换算方法]]></title>
<link>/article/Csharp/mutimedia/2012/5566.html</link>
<author>佚名</author>
<category><![CDATA[多媒体编程]]></category>
<pubDate>2012-05-13 09:53:02</pubDate>
<description><![CDATA[C#中以像素作为尺寸单位，像素是一种相对的尺寸概念，与毫米的转换与当前显示器的分辨率有关。在不同分辨率下转换的系数不同。
借助GDI可以完成毫米至像素的转换。
public static double MillimetersToPixelsWidth(double length)
　&#123; 
  System.Windows.Forms.Panel p = new System.Windows.Forms.Panel();
 　System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(p.Handle);
　 IntPtr...]]></description>
</item>
<item>
<title><![CDATA[C#删除字符串尾部指定的子字符串]]></title>
<link>/article/Csharp/methprog/2012/5529.html</link>
<author>biye5u.com</author>
<category><![CDATA[算法设计]]></category>
<pubDate>2012-04-30 23:39:17</pubDate>
<description><![CDATA[有时，我们可能要从一个字符串的尾部删除指定的字符串，这在C#中实现起来还较为方便。
其基本思想为：
（1）首先判断一下源字符串中是否包含要删除的字符串；
（2）分别计算源字符串和要删除的字符串的长度；
（3）获取源字符串中要删除字符串的位置deletePos；
（4）在源字符串的尾部deletePos位置开始截取与要删除字符串等长的字符串；
（5）比较截取的字符串与要删除的字符串是否相同；
（6）如果相同，则从源字符串中移除从deletePos位置开始的字符串
下面是具体的源代码：
 /// &lt;summary&gt;
 /// 从字符串中的尾部删除指定的字符串
 /// &lt;/s...]]></description>
</item>
<item>
<title><![CDATA[C#中判断指定的年份是否为闰年]]></title>
<link>/article/Csharp/methprog/2012/5530.html</link>
<author>biye5u.com</author>
<category><![CDATA[算法设计]]></category>
<pubDate>2012-04-30 11:44:50</pubDate>
<description><![CDATA[有很多人认为，只要年份能被4整除就是闰年了，实际上不是这样的，判断一个年份是否为闰年有两个条件：
（1）如果一个年份能被400除尽，则其是闰年；
（2）如果年份能被4整除，而不能被100整除，则该年份为闰年。
为什么年份被4整除而不能被100整除时才是闰年呢？下面首先介绍一个常识，然后再给出具体的算法。
关于公历闰年是这样规定的：地球绕太阳公转一周叫做一回归年，一回归年长365日5时48分46秒。因此，公历规定有平年和闰年，平年一年有365日，比回归年短0.2422日，四年共短0.9688日，故每四年增加一日，这一年有366日，就是闰年。但四年增加一日比四个回归年又多0.0312日,4...]]></description>
</item>
<item>
<title><![CDATA[C#自动化内存管理]]></title>
<link>/article/Csharp/jichu/2012/5501.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-04-26 22:01:42</pubDate>
<description><![CDATA[自动化的内存管理（Automatic memory management）
手动管理内存需要程序员自行分配和释放内存块。这要求程序员有清晰的头脑和对整个运行过程有十分的把握。而c#把程序员从这难以承担的任务中解放出来。在多数的情况下，这种自动内存管理提高代码的质量和程序员的生产力。并且，不会对程序的意图和执行产生负面的影响。
下面是一个例子
using System; 
public class Stack
&#123;
 private Node first = null;
 public bool Empty 
 &#123;
 get &#123; return (first == null); &#125;...]]></description>
</item>
<item>
<title><![CDATA[C#中??运算符的使用方法]]></title>
<link>/article/Csharp/jichu/2012/5483.html</link>
<author>不详</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-04-22 15:40:30</pubDate>
<description><![CDATA[??是C#2.0中新增的一个运算符，可以认为是三元操作符?:的简版，其主要作用是如果 ?? 运算符的左操作数非空，该运算符将返回左操作数，否则返回右操作数。如果能较好地使用此操作符，将会得到意想不到的效果。
public class Program
&#123;
 class MyClass &#123;&#125;
 
 static MyClass instance;
 static void Main()
 &#123;
 //如果instance == null,则做初始化 
 
 //常规写法:
 if(instance == null)
 &#123;
  instance = new MyClass()...]]></description>
</item>
<item>
<title><![CDATA[C#中默认参数的使用方法]]></title>
<link>/article/Csharp/jichu/2012/5482.html</link>
<author>本站</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-04-22 15:28:48</pubDate>
<description><![CDATA[可选参数是C# 4.0中的新特性，其作用在于在调用者不提供参数值时可以给参数一个默认值，其具体用起来如下面所示：
static void Main(string[] args) 
&#123; 
　TestMethod(); 
　TestMethod(10); 
　Console.ReadLine(); 
&#125; 
 public static void TestMethod(int parameter = 5) 
&#123; 
　Console.WriteLine(parameter); 
&#125;
上面这段程序在第一次调用TestMethod时输出的值为5，第二次调用时输出的值为10，即第一调用...]]></description>
</item>
<item>
<title><![CDATA[C#中压缩图片的算法]]></title>
<link>/article/Csharp/superapp/2012/5481.html</link>
<author>佚名</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2012-04-22 14:51:10</pubDate>
<description><![CDATA[ 有时，我们在程序中想把比较大的图片压缩为比较小的尺寸。下面的程序就是将图片压缩为较小尺寸的函数。
/// &lt;summary&gt;
/// 压缩图片的算法
/// &lt;/summary&gt;
/// &lt;param name=&quot;fileStream&quot;&gt;图片流&lt;/param&gt;
/// &lt;param name=&quot;quality&quot;&gt;压缩质量，取值在0-100之间，数值越大质量越高&lt;/param&gt;
/// &lt;returns&gt;&lt;/returns&gt;
private byte[] CompressionImage(Stream fileStream, long quality)
&#123;
 using (S...]]></description>
</item>
<item>
<title><![CDATA[C#程序中将控件置于最顶层或最底层的方法]]></title>
<link>/article/Csharp/winform/2012/5478.html</link>
<author>biye5u.com</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2012-04-21 10:34:31</pubDate>
<description><![CDATA[有时，我们可能动态的添加控件，并准备将其置于对顶层或最底层。实现的方法有两个：
一种方法是在WinForm窗体中使用Controls控件集的SetChildIndex方法，该方法将子控件设定为指定的索引值，其方法原型如下：
void SetChildIndex(Control child, int newIndex)
假设窗体中有一个按钮Button控件，名为button1,如果将其的索引设置为10，源代码如下：
this.Controls.SetChildIndex（button1, 10);
索引越大，控件位置越靠上。
另外一种方法是使用相应控件的使用其源代码如下：
butt...]]></description>
</item>
<item>
<title><![CDATA[让ErrorProvider提示图标在控件左侧显示的方法]]></title>
<link>/article/Csharp/winform/2012/5470.html</link>
<author>biye5u.com</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2012-04-19 12:40:37</pubDate>
<description><![CDATA[ErrorProvider控件可以改善用户体验，给编程人员带来很多错误的处理方便。
ErrorProvider控件错误提示图标默认在控件的右侧显示并给出错误提示，但有时，可能由于界面设计的需要，在控件的右侧有其它紧挨着的控件，这样，会造成提示不明确或效果不理想的问题。
下图就是一个设计实例，在第一个文本框右侧有一个选择按钮，用户通过该按钮选择相应的资助者信息，并将其编号、姓名等信息显示到相应的文本框中，但是如果使用ErrorProvider默认位置，则其会显示在选择按钮上，造成用户体验较差。因此，准备将其显示在文本框控件的左侧。

在设计中，可以指定其显示的位置，方法是，选中要设置错误...]]></description>
</item>
<item>
<title><![CDATA[C#泛型类型参数的使用]]></title>
<link>/article/Csharp/superapp/2012/5439.html</link>
<author>佚名</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2012-04-12 05:54:01</pubDate>
<description><![CDATA[在泛型类型或方法定义中，类型参数是客户端在实例化泛型类型的变量时指定的特定类型的占位符。泛型类（如泛型介绍（C# 编程指南）中列出的 GenericList&lt;T&gt;）不可以像这样使用，因为它实际上并不是一个类型，而更像是一个类型的蓝图。若要使用 GenericList&lt;T&gt;，客户端代码必须通过指定尖括号中的类型参数来声明和实例化构造类型。此特定类的类型参数可以是编译器识别的任何类型。可以创建任意数目的构造类型实例，每个实例使用不同的类型参数，如下所示：
GenericList&lt;float&gt; list1 = new GenericList&lt;float&gt;(); 
GenericList&lt;Exam...]]></description>
</item>
<item>
<title><![CDATA[C#中使用泛型的优点]]></title>
<link>/article/Csharp/superapp/2012/5438.html</link>
<author>佚名</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2012-04-12 05:47:06</pubDate>
<description><![CDATA[在公共语言运行库和 C# 语言的早期版本中，通用化是通过在类型与通用基类型 Object 之间进行强制转换来实现的，而目前泛型提供了针对这种限制的解决方案。通过创建泛型类，您可以创建一个在编译时类型安全的集合。
使用非泛型集合类的限制可以通过编写一小段程序来演示，该程序利用 .NET Framework 基类库中的 ArrayList 集合类。ArrayList 是一个使用起来非常方便的集合类，无需进行修改即可用来存储任何引用或值类型。
// The .NET Framework 1.1 way to create a list:
System.Collections.ArrayList...]]></description>
</item>
<item>
<title><![CDATA[C#泛型类与泛型方法的使用]]></title>
<link>/article/Csharp/superapp/2012/5437.html</link>
<author>佚名</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2012-04-12 05:37:47</pubDate>
<description><![CDATA[泛型类和泛型方法同时具备可重用性、类型安全和效率，这是非泛型类和非泛型方法无法具备的。泛型通常用在集合和在集合上运行的方法中。.NET Framework 2.0 版类库提供一个新的命名空间 System.Collections.Generic，其中包含几个新的基于泛型的集合类。
下面的代码示例演示一个用于演示用途的简单泛型链接列表类。（大多数情况下，建议使用 .NET Framework 类库提供的 List&lt;T&gt; 类，而不要自行创建类。）在通常使用具体类型来指示列表中所存储项的类型时，可使用类型参数 T。其使用方法如下：
（1）在 AddHead 方法中作为方法参数的类型。
（2）在...]]></description>
</item>
<item>
<title><![CDATA[C#中让窗体显示在最前端]]></title>
<link>/article/Csharp/winform/2012/5428.html</link>
<author>biye5u.com</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2012-04-08 20:53:30</pubDate>
<description><![CDATA[使用QQ的人知道，QQ的登录界面总能位于其它窗体的最前端，以免被其它窗体所遮挡而无法看到。在C#中也可以轻松的实现这个功能。具体方法如下。
选中窗体后，在窗体的属性栏里找到TopMost属性，将其值修改为True（如下图所示），则该窗体启动后将位于其它窗体的最上端。

在程序中同样可以实现相同的效果，具体源代码如下：
假设窗体的实例名为frmCompany，则在启动该窗体之前设置该代码
FrmCompany frmCompany = new FrmCompany();
frmCompany.TopMost = true;
frmCompany.Show();]]></description>
</item>
<item>
<title><![CDATA[C#中控制窗体最大大小和最小大小的方法]]></title>
<link>/article/Csharp/winform/2012/5427.html</link>
<author>biye5u.com</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2012-04-08 20:32:58</pubDate>
<description><![CDATA[在C#编写界面程序时，有时为了界面布局的需要，经常限制窗体的最大大小和最小尺寸。这在C#中可以通过窗体的两个重要属性来实现，一个属性是Maximumsize和Minimumsize，其分别用来限制窗体可以调整的最大大小和最小大小。属性所在的位置如下图所示。

这两个属性都有两个值需要设置，一个用来控制窗体的宽度，一个是窗体的高度，即第一个参数是控制窗体的宽度的，另外一个是控制窗体的高度的。
在编写程序时，可以用代码来控制这两个属性的值。可以在装载窗体事件Load中来编写代码，如下面给出的源代码所示：
private void FrmAddStudent_Load(object send...]]></description>
</item>
<item>
<title><![CDATA[C#中截取全屏幕图像的方法]]></title>
<link>/article/Csharp/jichu/2012/5422.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-04-07 08:55:12</pubDate>
<description><![CDATA[C#中截取屏幕图像的方法，有时有些程序需要监控用户的屏幕或者是对屏幕进行截图，这个C#函数就是实现这个功能。它可以截取全屏幕的图像。具体源代码如下：
 /// &lt;summary&gt;
 /// 截取全屏幕图像
 /// &lt;/summary&gt;
 /// &lt;returns&gt;屏幕位图&lt;/returns&gt;
 public Bitmap GetFullScreen()
 &#123;
  Bitmap mimage = new Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Scree...]]></description>
</item>
<item>
<title><![CDATA[C#中获取某个日期所对应的星期数]]></title>
<link>/article/Csharp/jichu/2012/5421.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-04-07 08:45:00</pubDate>
<description><![CDATA[C#中获取日期所对应的星期。下面的函数就是用来处理传递过来的日期所对应的星期几。这在C#中相对较容易些，因为C#的DateTime类中有一个属性DayOfWeek专门用来获取某个日期所对应的星期的，只要将其转换成相应的数字就可以了，具体源代码如下
 /// &lt;summary&gt;
 /// 获取日期对应的星期
 /// &lt;/summary&gt;
 /// &lt;param name=&quot;dateTime&quot;&gt;要判定的人日期&lt;/param&gt;
 /// &lt;returns&gt;返回日期所对应的星期&lt;/returns&gt;
 public static int GetWeekIntDay(DateTime dat...]]></description>
</item>
<item>
<title><![CDATA[C#中获取指定日期所在一年中的周数]]></title>
<link>/article/Csharp/jichu/2012/5420.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2012-04-07 08:36:14</pubDate>
<description><![CDATA[有时，在我们的程序中需要判断某个日期是一年中的第几周，以便进行相关的处理，下面这个函数就是用来判断某个日期是第一年中的第几周。
 /// &lt;summary&gt; 
 /// 取指定日期是一年中的第几周 
 /// &lt;/summary&gt; 
 /// &lt;param name=&quot;dateTime&quot;&gt;给定的日期&lt;/param&gt; 
 /// &lt;returns&gt;返回 该日期所在一年中的周数&lt;/returns&gt; 
 public static int WeekOfYear(DateTime dateTime)
 &#123;
  int firstdayofweek = System.Convert.To...]]></description>
</item>
<item>
<title><![CDATA[C#5.0的新特性：异步编程]]></title>
<link>/article/Csharp/superapp/2012/5395.html</link>
<author>佚名</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2012-04-04 07:05:15</pubDate>
<description><![CDATA[在即将到来的新的Windows Runtime（Windows 运行时）中更根本地确定任何API都不会运行超过50ms的时间。需要更长时间的操作将会由&#39;kick off this operation&#39;API来代替，不等待运算结果就直接立刻返回。这样做是因为微软希望Windows8 Metro程序能够在即时的触控UI（用户界面）上能够“快速并且流动”，因为触控操作上即使是微小的停顿相比于用鼠标或者键盘来操作都会变得更加明显。从UI的角度来说，这是一项很有帮助的设计方案。
但是从开发者的角度来说，它会使编程变得更加麻烦。当我们读取文件或者调用WCF服务时，我们通常希望能够影响到结果。如果能够保证...]]></description>
</item>
<item>
<title><![CDATA[C#中使用Lock关键字进行线程同步]]></title>
<link>/article/Csharp/superapp/2012/5394.html</link>
<author>佚名</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2012-04-04 06:54:35</pubDate>
<description><![CDATA[lock 关键字可以用来确保代码块完成运行，而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。
lock 语句以关键字 lock 开头，它有一个作为参数的对象，在该参数的后面还有一个一次只能由一个线程执行的代码块。例如：
public void Function()
&#123;
 System.Object lockThis = new System.Object();
 lock(lockThis)
 &#123;
 // Access thread-sensitive resources.
 &#125;
&#125;
提供给 lock 关键字的参数必须为基于引用类型的对象，该对象...]]></description>
</item>
<item>
<title><![CDATA[C#中使用volatile进行线程同步]]></title>
<link>/article/Csharp/superapp/2012/5393.html</link>
<author>佚名</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2012-04-04 06:29:19</pubDate>
<description><![CDATA[volatile是最简单的一种同步方法。volatile 关键字表示字段可能被多个并发执行线程修改。声明为 volatile 的字段不受编译器优化（假定由单个线程访问）的限制。这样可以确保该字段在任何时间呈现的都是最新的值。当然简单是要付出代价的。它只能在变量一级做同步，volatile的含义就是告诉处理器，不要将我放入工作内存，请直接在主存操作我。因此，当多线程同时访问该变量时，都将直接操作主存，从本质上做到了变量共享。
volatile 关键字可应用于以下类型的字段：
（1）引用类型Any reference type
（2）指针类型（不安全的上下文中）Any pointer typ...]]></description>
</item>
<item>
<title><![CDATA[详解C#中MessageBox消息框]]></title>
<link>/article/Csharp/winform/2011/5124.html</link>
<author>biye5u.com</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2011-12-15 10:09:51</pubDate>
<description><![CDATA[在程序中，我们经常使用消息对话框给用户一定的信息提示，如在操作过程中遇到错误或程序异常，经常会使用这种方式给用于以提示。在C#中，MessageBox消息对话框位于System.Windows.Forms命名空间中，一般情况，一个消息对话框包含信息提示文字内容、消息对话框的标题文字、用户响应的按钮及信息图标等内容。C#中允许开发人员根据自己的需要设置相应的内容，创建符合自己要求的信息对话框。 
MessageBox消息对话框只提供了一个方法Show()，用来把消息对话框显示出来。此方法提供了不同的重载版本，用来根据自己的需要设置不同风格的消息对话框。此方法的返回类型为DialogResult...]]></description>
</item>
<item>
<title><![CDATA[禁止用户编辑修改ComboBox控件内容的方法]]></title>
<link>/article/Csharp/winform/2011/5077.html</link>
<author>biye5u.com</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2011-11-29 16:12:47</pubDate>
<description><![CDATA[在编写C#的Windows应用程序时，可能我们不希望用户修改或编辑ComboBox控件中的内容，而是让用户在里面选择，本文就给出具体的解决方法。
具体做法为：
（1）选中ComboBox控件
（2）在事件中找到KeyPress事件
（3）双击该事件，在事件处理程序中编写如下代码：
e.Handled = true;
设计界面如下：

图1 设计中界面

图2 选择KeyPress事件

图3 编写代码

图4 运行中，用户无法修改其内容]]></description>
</item>
<item>
<title><![CDATA[在C#的RichTextBox控件中添加图片的方法]]></title>
<link>/article/Csharp/winform/2011/5073.html</link>
<author>biye5u.com</author>
<category><![CDATA[窗体界面]]></category>
<pubDate>2011-11-26 16:27:39</pubDate>
<description><![CDATA[自己编写了一个记事本程序，记事本程序使用WinForm的RichTextBox控件实现。这个程序在Windows记事本的基础上添加了改变记事本背景颜色，设置记事本背景图片、改变记事本字体颜色和样式的功能。同时，还想在记事本中添加相关图片，而RichTextBox控件并没有提供添加图片功能，于是在网上找了一些资料，根据这些资料终于实现了这个功能。
因为RichTextBox控件在运行过程中允许往里粘贴图片等内容，于是网上的解决方案大多是借助这一特点而实现的。其实现的基本思想如下：
（1）将要添加的图片保存到剪贴板中，这主要借助Clipboard类的SetDataObject方法
（2）将剪...]]></description>
</item>
<item>
<title><![CDATA[C#中常用正则表达式]]></title>
<link>/article/Csharp/jichu/2011/5056.html</link>
<author>佚名</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2011-11-18 07:41:44</pubDate>
<description><![CDATA[在c#中使用正则表达式可以帮我们做很多事情，比如判断一个数是否为正整数、是否符合相应的格式等。下面列出了一些常用的C#正则表达式：
（1）&quot;^\d+&#36;&quot;　//非负整数（正整数 + 0）
（2）&quot;^[0-9]*[1-9][0-9]*&#36;&quot;　//正整数
（3）&quot;^((-\d+)|(0+))&#36;&quot;　//非正整数（负整数 + 0）
（4）&quot;^-[0-9]*[1-9][0-9]*&#36;&quot;　//负整数
（5）&quot;^-?\d+&#36;&quot;　　//整数
（6）&quot;^\d+(\.\d+)?&#36;&quot;　//非负浮点数（正浮点数 + 0）
（7）&quot;^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-...]]></description>
</item>
<item>
<title><![CDATA[C#中接口的使用方法]]></title>
<link>/article/Csharp/jichu/2011/5045.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2011-11-15 23:57:18</pubDate>
<description><![CDATA[接口可以理解为是一种标准，在这种标准中规定了实现其的类及结构体中至少应包含的方法和属性。在C#语言中不允许类的多继承，这是因为传统的多继承带来的问题往往胜过其带来的好处。然而，现实世界里到处都存在着多继承的情况。为了解决这个矛盾，在一些面向对象语言中提出了接口的概念。在C#中，通过接口可以实现多继承的功能。
1.接口的声明
   访问修饰符 interface 接口名称&#123;:基接口&#125;
    &#123;
     接口体;
    &#125;
如下面定义了一个控件的接口IControl：
 interface IControl
  &#123;
   void Paint();
  &#125;
与类不同，接...]]></description>
</item>
<item>
<title><![CDATA[C#连接数据库的基本方法与过程]]></title>
<link>/article/Csharp/dbprog/2011/5044.html</link>
<author>biye5u.com</author>
<category><![CDATA[数据库编程]]></category>
<pubDate>2011-11-15 22:35:29</pubDate>
<description><![CDATA[现在的大多数应用程序都离不开数据库来存储数据，因此，学习程序设计一定要学习数据库编程。本文介绍了使用C#编写数据库控制台程序的步骤与方法。
使用C#编写数据库应用程序主要有下面几个步骤（注，本文暂未用到数据适配器和数据集，相关内容参加以后的相关文章，并且本文暂只讲解在C#中读取相关数据的方法。）：
（1）引入相关的命名空间；
（2）建立数据库连接对象Connection，并指定连接字符串；
（3）建立命令对象Command，并指定命令对象所使用的连接和命令文本内容（SQL）
（3）建立数据库读取器，DataReader；
（4）执行命令对象，并使用DataReader对象指向结果集...]]></description>
</item>
<item>
<title><![CDATA[Visual C#如何使用Active X组件]]></title>
<link>/article/Csharp/superapp/2011/4886.html</link>
<author>佚名</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2011-10-01 15:17:30</pubDate>
<description><![CDATA[Active X组件是充分利用OLE和Active X技术的自定义组件，微软公司积极鼓励把Active X作为一个与应用程序无关的自定义组件。从本质上说，Active X组件是一个Active X服务器，他能够提供所有的OLE功能和服务，可视化编辑、拖放和OLE自动化。ActiveX控件有属性(Propertiy)、方法(method)、事件(Event)三个元素构成，他一般是以“DLL”扩展名的形式出现的。
这时细心的读者可能已经注意到在.Net FrameWork SDK中的类库中的类库文件也是以“DLL”扩展名的形式出现的。那么这二种“DLL”是一种类型的么?答案是否定的。这是因为这些...]]></description>
</item>
<item>
<title><![CDATA[C#中WinForm程序界面初始位置不能正常居中的解决方法]]></title>
<link>/article/Csharp/others/2011/4839.html</link>
<author>佚名</author>
<category><![CDATA[C#其它]]></category>
<pubDate>2011-09-16 11:49:54</pubDate>
<description><![CDATA[在设置窗体的画面初始位置时，当将其StartPosition属性值设置为CenterScreen时，窗体会显示在显示器的中央，然而当程序在笔记本和台式机中运行时，其位置竟然不同。其中台式机显示器和笔记本显示器相同，均为17英寸。
在台式机上设置该属性时，在台式机上运行没任何问题，然而在笔记本上运行时则不显示在屏幕中央，当在笔记本上设置该属性时，在笔记本上运行没问题，然而在台式机上就有问题了。原因请知情者不吝赐教。
现将解决方法和大家共享一下。使用代码设置窗体的起始位置。代码如下： 
private void Form_Load(object sender, System.EventArg...]]></description>
</item>
<item>
<title><![CDATA[C#获取Setup文件的运行路径的方法]]></title>
<link>/article/Csharp/others/2011/4838.html</link>
<author>不详</author>
<category><![CDATA[C#其它]]></category>
<pubDate>2011-09-16 10:16:01</pubDate>
<description><![CDATA[在我 做的一个项目中因为需要在安装时做配置，而在打包之前是不知道配置的具体信息的。用InstallShield来做打包好像做这样的处理比较方便，但是使用Visual Studio创建安装项目来打包时好像不是那么容易，在网上查找相关的资料一直没有找到很好的方法来直接获取其运行路径，网上有人说继承Installer来做，但是无论如何所能取得的路径是系统msiexec.exe的运行路径，所以这种方法看起来是行不通了。获取其安装路径也是非常简单而且方法有很多种。
想到以前在做项目时要求程序只能有一个运行实例，这种方法来处理岂不是很好，换种思路来处理：先取得当前运行的所有Process然后再找到那个S...]]></description>
</item>
<item>
<title><![CDATA[C#中抽象类与接口的区别]]></title>
<link>/article/Csharp/jichu/2011/4825.html</link>
<author>不详</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2011-09-11 22:57:45</pubDate>
<description><![CDATA[很多人在学习抽象类和接口时，弄不明白两者之间的区别，弄不明白的原因，它们之间有太多的相似性，那么本文着重介绍两者之间的区别以让大家弄清楚C#中抽象类和接口到底有什么区别，它们主要用在什么场合。
1、抽象类
抽象类是特殊的类，只是不能被实例化；除此以外，具有类的其他特性；重要的是抽象类可以包括抽象方法，这是普通类所不能的。抽象方法只能声明于抽象类中，且不包含任何实现，派生类必须覆盖它们。另外，抽象类可以派生自一个抽象类，可以覆盖基类的抽象方法也可以不覆盖，如果不覆盖，则其派生类必须覆盖它们。
2、接口
接口是引用类型的，类似于类,和抽象类的相似之处有三点：
（1）接口不能实例化；
（...]]></description>
</item>
<item>
<title><![CDATA[C#中System.Management命名空间]]></title>
<link>/article/Csharp/superapp/2011/4823.html</link>
<author>不详</author>
<category><![CDATA[高级应用]]></category>
<pubDate>2011-09-11 22:02:26</pubDate>
<description><![CDATA[提供对大量管理信息和管理事件集合的访问，这些信息和事件是与根据 Windows 管理规范 (WMI) 结构对系统、设备和应用程序设置检测点有关的。应用程序和服务可以使用从 ManagementObjectSearcher 和 ManagementQuery 派生的类，查询感兴趣的管理信息（例如在磁盘上还剩多少可用空间、当前 CPU 利用率是多少、某一应用程序正连接到哪一数据库等等）；或者应用程序和服务可以使用ManagementEventWatcher 类预订各种管理事件。这些可访问的数据可以来自分布式环境中托管的和非托管的组件。
Management命名空间里面包括大量的类，下面本文主要介...]]></description>
</item>
<item>
<title><![CDATA[System.Collections.Generic 命名空间]]></title>
<link>/article/Csharp/jichu/2011/4806.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2011-09-08 16:05:33</pubDate>
<description><![CDATA[我们注意到在Visual Studio 2005中创建的应用程序都包含着System.Collections.Generic 命名空间，那么这个命名空间有什么作用呢？
实际上，System.Collections.Generic 命名空间是.NET Framework 2.0 版中是新增的一个命名空间，System.Collections.Generic 命名空间包含定义泛型集合的接口和类，泛型集合允许用户创建强类型集合，它能提供比非泛型强类型集合更好的类型安全性和性能。
System.Collections.Generic 命名空间中提供的泛型类型，可以使工作更容易完成，可以毫不费力地创...]]></description>
</item>
<item>
<title><![CDATA[C#中的bool数据类型]]></title>
<link>/article/Csharp/jichu/2011/4805.html</link>
<author>biye5u.com</author>
<category><![CDATA[C#基础]]></category>
<pubDate>2011-09-08 15:20:55</pubDate>
<description><![CDATA[C#中的bool类型表示真和假的概念，其值只有两种：true 与 false。
该数据类型在内存中占1个字节。
C#中的bool类型与C语言中的“真”“假”还不一样，C#中的bool类型不能和整数1与0转换。
即试图使用0表示“假”或使用非0值表示“真”都是不允许的。
则下面的写法是错误的：
bool blAccept;
blAccept = 1;
blAccept = 0;
而下面的写法是正确的：
bool blUpdate;
blUpdate = true;
blUpdate = false;
下面使用一个例子来说明C#中bool数据类型的使用方法：
using ...]]></description>
</item></channel></rss>

