主题:  ASP.NET学习手记

浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#162005/11/20 8:35:07
3.5.5 RadioButton 和 RadioButtonList 控件
可以使用两类Web服务器控件向Web窗体页添加单选按钮:RadioButton 或RadioButtonList。
RadioButton 控件使您可以更好地控制单选按钮组的布局。
RadioButtonList 控件则可以很容易的显示一个来自数据库表或集合的单选按钮列表,并且方便于编写代码以检查选定的按钮。
·RadioButton 控件
使用RadioButton控件,可以将单选按钮一个个地添加到页面。使用GroupName属性对单选按钮进行分组。GroupName属性相同的单选按钮属于同一个组。无论何时,一个组中只能有一个单选按钮被选中。若要确定一组中哪个控件被选中,必须分别测试每个控件。转变为HTML后,value值取决于单选按钮的ID属性。

属性
AutoPostBack:如果设置为true,当选择组中的新按钮时,自动发送表单。
Checked:如果单选按钮被选中,那么它的Checked属性为true,否则为false。
GroupName:指定包含此单选按钮的组的名称。
Text:设置或获取与此单选按钮相关联的文本标签。
TextAlign:单选按钮的文本标签的对齐方式,有效值为:Left|Right

事件
CheckedChanged:当单选按钮在选中与未选中之间切换时,引发此事件。

默认情况下,本事件并不立即导致向服务器发送Web窗体页。而是在下一次发送窗体时,在服务器代码中引发该事件。若要使本事件导致立即发送,请将RadioButton的AutoPostBack属性设置为true。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#172005/11/20 8:39:17
·RadioButtonList 控件
与RadioButton控件一样,RadioButtonList控件也代表单选按钮。但是,RadioButtonList控件代表一个单选按钮列表。RadioButtonList中的每个列表条目代表一个单选按钮。

属性
AutoPostBack: 如果设置为true,当选择新的新按钮时,自动发送表单。
CellPadding: 指定边框和单选按钮之间的像素数
CellSpacing: 指定RadioButtonList控件中各个单选按钮之间的像素数
DataMember: 指定绑定到此控件的数据源表
DataSource: 指定控件中列出的条目的数据源
DataTextField: 指出用作单选按钮标签的数据源字段
DataTextFormatString: 设置或获取一个格式字符串
DatavalueField: 指出用作单选按钮值的数据源字段
Items: 代表RadioButtonList控件中条目的集合
RepeatColumns: 决定用于显示单选按钮的列数
RepeatDirection: 指出单选按钮依次显示的方向,Horizontal|Vertical
RepeatLayout: 决定如何格式化单选按钮,Table|Flow
SelectedIndex: 指出当前选中的单选按钮的索引号,从0开始计数
SelectedItem: 代表被选中的单选按钮
Selectedvalue: 代表被选中的单选按钮的值
TextAlign: 单选按钮的文本标签的对齐方式,有效值为:Left|Right

事件
SelectedIndexChanged:当列表控件中的选择在向服务器的各次发送过程间更改时,会引发 SelectedIndexChanged 事件。

·将单选按钮添加到RadioButtonList控件(有三种方法)
①在声明RadioButtonList控件时列出:对每个项在 RadioButtonList 控件的开始和结束标记之间放置一个 ListItem 元素,如:
<asp:RadioButtonList id="rbtnl" runat="server">
  <asp:ListItem Value="0" Selected="True">第一项</asp:ListItem>
  <asp:ListItem Value="1">第二项</asp:ListItem>
  <asp:ListItem Value="2">第三项</asp:ListItem>
  <asp:ListItem Value="3">第四项</asp:ListItem>
  <asp:ListItem Value="4">第五项</asp:ListItem>
</asp:RadioButtonList>


②将条目直接添加到RadioButtonList控件的ListItemCollection集合中,如在Web窗体上有一个名为rbtnl的RadioButtonList控件,我们可以用下面的方法为它添加条目:
private void Page_Load(object sender, System.EventArgs e)
{
  if(!Page.IsPostBack)//如果页面是第一次加载
  {
    rbtnl.Items.Add("Author");//用这种方法添加的条目,其文本和值相同。
    rbtnl.Items.Add(new ListItem("3G色网","Http://www.3gcolor.com"));
  }
}


③将RadioButtonList控件绑定到一个数据源。



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#182005/11/21 9:31:37
谢谢你整理出这样资料,一定下了不少功夫,对初学者会有帮助的
提个建议,整理可以简略些介绍些的,因帮助中都有,可以增加些自己实践方面心得
希望你能更好写出自己的手记


非常大鱼

缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
#192005/11/21 9:40:55
嗯.我第一次就给过PM.如果写这样的类似于帮助类的文章,再怎么写也未必有书上能详细.多些自己的心得感悟,以及自己遇到的困难和思考,那样价值会更大一些.



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#202005/11/21 15:57:30
呵呵,响应二位版主的建议,我尽量多用些实例吧。实在不知教程该如何来写,写的太少,怕初学者看不懂,写得太多,又显得PPMM。不过,多年的经验告诉我,在学习的过程中,多做实例是个不错的选择,可以深入并巩固学的东西,还可以发现、扩展其他的相关知识。不知下面的教程是否合适,请多提意见。

3.5.6 CheckBox 和 CheckBoxList 控件

在ASP.NET中,可以使用两种类型的 Web 服务器控件将复选框添加到 Web 窗体页上:单个 CheckBox 控件或 CheckBoxList 控件。两种控件都为用户提供了一种输入布尔型数据(真或假、是或否)的方法。(在以后的教程中,将不再介绍那些最基本的属性和事件)

·CheckBox 控件:单个复选框
这个比较简单,主要是使用一个属性和一个事件:
Checked属性,如果复选框被选中,那么它的Checked属性为true,否则为false。
CheckedChanged事件 当 Checked 属性的值在向服务器进行发送期间更改时发生。

·CheckBoxList 控件:一系列复选框
具有SelectedIndexChanged事件,当列表控件的选定项在信息发往服务器之间变化时发生。

与 RadioButtonList 控件一样,CheckBoxList 控件也支持SelectedIndex和SelectedItem属性,但是CheckBoxList控件允许同时选择多个条目,因此SelectedIndex属性返回选择的第一个条目的索引号,SelectedItem属性则返回选择的第一条目。

实例测试

①新建窗体,添加如下控件(CheckBoxList控件的ID为:chklist1):

图片如下:


②双击chklist1,打开.CS文件,输入如下代码:
private void chklist1_SelectedIndexChanged(object sender,System.EventArgs e)
{
  lblMessage.Text="您喜欢的第一项体育运动是:"+chklist1.SelectedItem.Text;
  lblMessage.Text+="<br>您喜欢的体育项目包括:";
  for(int i=0;i<chklist1.Items.Count;i++){
    if(chklist1.Items[i].Selected)
    {
      lblMessage.Text+="<br>"+chklist1.Items[i].Text;
    }
  }
}


③将chklist1的AutoPostBack属性设为True。

④运行它,开始测试

测试结果

SelectedItem 返回复选框列表中第一个被选中的条目,而不是你第一个选择的条目。

如果要显示第一时间被选中的条目,可以通过其他技巧实现。如:

在窗体上再添加一个Label控件,将其 Text 属性设置为空,ID 属性设置为 lblFirstEnjoy,Visible 属性设置为False,然后修改上面的代码如下:
private void chklist1_SelectedIndexChanged(object sender,System.EventArgs e)
{
  if(lblFirstEnjoy.Text=="")lblFirstEnjoy.Text=chklist1.SelectedItem.Text;
  lblMessage.Text="您喜欢的第一项体育运动是:"+lblFirstEnjoy.Text;
  lblMessage.Text+="<br>您喜欢的体育项目包括:";
  for(int i=0;i<chklist1.Items.Count;i++){
    if(chklist1.Items[i].Selected)
    {
      lblMessage.Text+="<br>"+chklist1.Items[i].Text;
    }
  }
}


注:这也不是好方法,如果我第一个选择的是羽毛球,第二个选择的是游泳,然后我又取消了羽毛球,就会出现问题了:他告诉我您喜欢的第一项体育运动是:羽毛球!请您自行研究一下更好的方法吧。



EdisonNet

职务:普通成员
等级:1
金币:0.0
发贴:10
注册:2004/1/28 13:50:02
#212005/11/22 19:08:08
顶~楼主的手记很基础了~



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#222005/11/23 9:43:53
上面问题的解决方案:
为了显示被选中的条目,需要记住用户的操作顺序。我采用了字符串来处理。这个字符串是由以逗号分隔的条目索引号组成的,如"0,2,1,",当用户选择一项时,就将该项的索引号加入到字符串中,用户取消一项时,从字符串中删除相应的索引号,这样就保证了字符串中的第一个索引号是用户第一时间选中的条目的索引号。
相关代码如下:

private void chklist1_SelectedIndexChanged(object sender, System.EventArgs e)
{
lblMessage.Text="您喜欢的第一项体育运动是:"+getFirstEnjoy();//显示第一时间选择的条目
lblMessage.Text+="<br>您喜欢的体育项目包括:"+getAllEnjoy();//显示所有选择的条目
}

所有选中的条目处理起来比较简单,只要遍历所有项,查看每项的Selected属性,如果为真,就表示被选中了。

#region 返回所有喜欢的体育运动
private string getAllEnjoy()
{
string strReturn="";
for(int i=0;i<chklist1.Items.Count;i++)
{
if(chklist1.Items[i].Selected)strReturn+=("<br>"+chklist1.Items[i].Text);
}
return strReturn;
}
#endregion

显示第一时间选择的条目也需要遍历所有项,查看每项的Selected属性,如果为真,并且它的索引号没有位于字符串中,将它加入字符串;如果为假,并且它的索引号位于字符串中,将它从字符串中删除:

#region 返回最先选中的体育运动
private string getFirstEnjoy()
{
for(int i=0;i<chklist1.Items.Count;i++)//遍历复选框列表的所有项 {
if(chklist1.Items[i].Selected)//如果当前项被选中,有两中情况:先前选中的|刚刚选中的
{
if(!inList(i))addToList(i);//如果它的索引号没有在字符串中,说明它是刚被选中的,将其加入字符串序列
}
else//如果当前项未被选中,也有两种情况:以前就未被选中|刚才被取消的
{
if(inList(i))removeFromList(i);//如果它的索引号在字符串中,说明它是刚才被取消的,从字符串序列中将其删除
}
}
if(lblFirstEnjoy.Text=="")//如果Label控件lblFirstEnyoy的Text属性为空,说明一项都没有被选取,返回"空"。
{
return "无";
}
else//否则,返回字符串序列中第一个索引号所对应的条目的Text属性值
{
return chklist1.Items[Convert.ToInt32(lblFirstEnjoy.Text.Split(',')[0])].Text;
}
}
#endregion

#region 判断某个值是否在列表中
private bool inList(int index)
{
if(lblFirstEnjoy.Text.IndexOf(index+",")>=0)
{
return true;
}
else
{
return false;
}
}
#endregion

#region 添加到喜欢列表
private void addToList(int index)
{
lblFirstEnjoy.Text+=(index+",");
}
#endregion

#region 从喜欢列表中删除
private void removeFromList(int index)
{
lblFirstEnjoy.Text=lblFirstEnjoy.Text.Replace(index+",","");
}
#endregion

编辑历史:[此帖最近一次被 diffmaker 编辑过(编辑时间:2005-11-23 09:49:17)]


浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#232005/11/25 13:38:44
3.5.7 DropDownList 和 ListBox 控件

·DropDownList控件:单项选择下拉列表框

它提供
四个常用的属性:AutoPostBack、Text、value、Selected
一个事件:SelectedIndexChanged
属性及事件的使用与RadioButtonList控件类似,这里不再赘述。

·ListBox控件:可进行单项或多项选择的列表框
它可一次显示多项,也可允许用户选择多项。取决于这两个属性:
Rows:控件中显示的行数。默认值为 4。行数必须在 1 到 2000 之间。
SelectionMode:获取或设置 ListBox 控件的选择模式。默认值为单选 Single。

·示例:通过DropDownList控件创建一个跳转菜单

①新建一窗体,添加一个DropDownList控件ddl1,将其AutoPostBack属性设为True

②在属性面板中,输入相关条目,如下:
Selected  Text     value
True    请选择网站  0
False    百度     http://www.baidu.com
False    Google    http://www.google.com
False    雅虎     http://www.yahoo.com.cn

③双击ddl1,打开CS文件,输入如下代码:
private void ddl1_SelectedIndexChanged(object sender, System.EventArgs e)
{
Response.Redirect(ddl1.Selectedvalue);
}

④完成,运行窗体试一下吧。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#242005/11/30 16:24:09
今天真郁闷,我的小站所有服务器遭受攻击,机房调整,一直连不上去了。真烦,怎么当时在快网租空间呢。

3.6 在C#变量中存储信息

C#是强类型化语言,任何变量都必须具有一个数据类型。
在C#中,变量名是区分大小写的。

变量的命名规则(老生常谈):
必须以字母开头(不可用数字或符号)
不能包含句点/停顿或空格
不能与C#保留字(关键字)相同

变量的声明
变量类型 变量名;

int i;
i=2005;
也可以在声明变量时,为其赋值:
int i=2005;
int j=2,k=3



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#252005/11/30 16:43:59
3.7 数据类型

·数字型(整型)
C#类型  占用字节  默认值  范围
byte    1      0    [0,255] 
sbyte   1      0    [-128,127] 
short    2     0    [-32768,32767] 
ushort   2     0    [0,65535] 
int     4     0    [-2147483648,2147483647] 
uint    4     0    [0,4294967295] 
long    8     0L    [-9223372036854775808,223372036854775807] 
ulong    8    0UL    [0,18446744073709551615] 

说明
①如果整数无后缀,则其类型为以下类型中可表示其值的第一个类型:int、uint、long、ulong
②使用后缀指定整数的类型(后缀大小写均可)
如果使用L,则整数的类型将根据其大小为 long 或 ulong。
如果使用U,则整数根据其大小为 uint 或 ulong。
如果使用UL,则整数的类型为 ulong。
③数据类型的转换
短字节的数据类型可以隐式转换为长字节的数据类型,但是长字节的数据类型不能隐式转换为短字节的数据类型,下面的指令是错误的:
int x=1,y=2;
byte z=x+y;
请使用显示转换:
byte z=(byte)(x+y);
④下面这条指令是错误的:
byte x=1,y=2;
byte z=x+y;
为什么?注意说明的第一条,x+y算式返回的结果3为int类型,因此出错了。

浮点型
分float和double两种,分别占用4个、8个字节
①默认情况下,赋值运算符右侧的实数被视为 double。
②使用后缀指定整数的类型(后缀大小写均可)
希望整数被视为 float,请使用后缀F
希望整数被视为 double,请使用后缀D
③数据类型的转换
整型变量可以隐式的转换为浮点型
float型可以隐式的转换为double型
④示例
float a=1;//正确
float b=1.0;//错误
float c=1.0f;//正确
double d=1;//正确
double e=1.0;//正确

小数型
decimal,占用4个字节,默认值为0.0M,接受最多28位有效数字。
如果希望实数被视为 decimal 类型,请使用后缀M
整型被隐式转换为 decimal,其计算结果为 decimal
在浮点型和 decimal 类型之间不存在隐式转换
示例
decimal x=4;//正确
decimal y=4.0;//错误
decimal z=4.0M;//正确

在选择数据类型时,才能满足条件的情况下,选择最小、最简单的类型来完成工作,代码的效率也最高。

格式化数值:有时,我们可能需要将数值以一定的格式来呈现,就需要对数值进行格式化。我们使用格式字符串指定格式。格式字符串采用以下形式:Axx,其中 A 为格式说明符,指定格式化类型,xx 为精度说明符,控制格式化输出的有效位数或小数位数。
格式说明符    说明      示例           输出 
C        货币     2.5.ToString("C")      ¥2.50  
D        十进制数   25.ToString("D5")     00025 
E        科学型    25000.ToString("E")    2.500000E+005 
F        固定点    25.ToString("F2")      25.00 
G        常规    2.5.ToString("G")       2.5 
N        数字    2500000.ToString("N")   2,500,000.00 
X        十六进制  255.ToString("X")      FF 

使用格式字符串真的方便多了。功能也要比ASP中使用的VBScript强多了。记得在ASP中为了给数字加上前导的0,还写过专门的函数,现在不用了。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#262005/12/2 11:53:10
文本数据类型(string char)

string:字符串类型,它是一个对象(引用类型的变量)。
在ASP.NET中,可以用[]直接访问 string 中的个别字符了,如char x="Food"[3]//x='d'
string 类型的字符串有两种写法:
①用引号引起来:字符串括在双引号内,如:
string Author="Diffmaker";
②用@引起来:以 @ 开头,并用双引号引起来,如
string b=@"Good morning";
两者的区别是:
·后者换码序列“不”被处理,可以轻松写出字符串,如下面的两个字符串是等效的
@"c:\Docs\Source\a.txt"
"c:\\Docs\\Source\\a.txt"
·
要在一个用引号引起来的字符串中包括一个双引号,使用 \"
要在一个用 @ 引起来的字符串中包括一个双引号,使用 ""
下面的两个字符串等效
"Tom said:\"Hello!Good Morning!\""
@"Tom said:""Hello!Good Morning!"""

char:字符类型,只能存储一个字符或编码形式的字符,如以下所有语句均声明了一个 char 变量并用字符 X 将其初始化:

char MyChar = 'X'; //字符
char MyChar = '\x0058'; //十六进制换码序列
char MyChar = (char)88; 显式转换整数字符(0 到 65535)代码
char MyChar = '\u0058'; //Unicode编码

5D能不能改进一点呢:在贴帖子的时候,不能连续设定颜色,如果我刚才将某段文字设为红色了,又想将另一段文字设为红色时,操作起来不太方便。

编辑历史:[此帖最近一次被 diffmaker 编辑过(编辑时间:2005-12-14 14:01:24)]


浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#272005/12/14 14:33:40
·字符串的常用操作(字符串的操作用得比较多,须掌握扎实)这里只讲一下ASP.NET的增加操作,更多的操作方法,请看这里

Insert-插入函数
语法:string Insert(int startIndex,string value);
功能:在字符串的指定索引位置插入一个字符串。
说明:在返回的字符串中,value字符串的第一个字符的索引号为startIndex。

Remove-删除函数
语法:string Remove(int startIndex,int count);
功能:从字符串的指定索引位置删除指定数目的字符。
说明:索引和计数必须引用该字符串内的位置,startIndex+count<=Length,count不能为负数

Join-串联函数
语法:string Join(string separator,string[] value,int startIndex,int count);
功能:串联部分数组元素,从第startIndex个元素开始,串联count个元素。
说明:这是增强的功能,也支持语法 string Join(string separator,string[] value);

Split-分割函数
语法:string[] Split(char[] separator,int count);
功能:根据分割字符将字符串分割成子字符串,然后将结果作为字符串数组返回。参数count指定返回的最大数组元素数,进行部分分割
说明:也支持语法 string[] Split(params char[] separator);
示例:string mystr="1+2+3-4+5+6";
mystr.Split('-');//返回 {"1+2+3","4+5+6"}
mystr.Split("+-".ToCharArray());//返回 {"1","2","3","4","5","6"}
mystr.Split(new char[]{'+','-'}); //返回{"1","2","3","4","5","6"}
mystr.Split("+-".ToCharArray(),4);//返回 {"1","2","3","4+5+6"}
mystr.Split("+-".ToCharArray(),100);//返回 {"1","2","3","4","5","6"}
注意上面分隔字符的几种用法
部分分割时,最多返回count个元素。


ToCharArray-打散函数(哈哈,借用Flash中的术语了)
语法:char[] ToCharArray();
功能:将字符串中的字符复制到字符数组。
说明:
增强语法:char[] ToCharArray(int startIndex,int length);
增强功能:将字符串中的指定子字符串内的字符复制到字符数组。
示例:string mystr="Diffmaker";
mystr.ToCharArray(4,4);//返回 {'m','a','k','e'}

Trim|TrimStart|TrimEnd-修剪函数
语法:
string Trim();
string TrimStart();
string TrimEnd();
string Trim(params char[] trimChars);
string TrimStart(params char[] trimChars);
string TrimEnd(params char[] trimChars);
功能:移除字符串两端、前面、后面的字符
说明:
当不指定参数时,移除的是空白字符
当指定参数时,移除的是指定字符

StartsWith|EndsWith-端点函数
语法:
bool StartsWith(string value);
bool EndsWith(string value);
功能:检测字符串是否以子串开始/结束

PadLeft|PadRight-填充函数
语法:
string PadLeft(int totalWidth);
string PadRight(int totalWidth);
string PadLeft(int totalWidth,char paddingChar);
string PadRight(int totalWidth,char paddingChar);
功能:在字符串左/右侧添加字符,使其达到指定长度
说明:当不指定第二个参数时,添加的是空格



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#282005/12/20 10:16:42
·日期时间数据类型

DateTime 值类型
DateTime表示时间上的一刻(自公元0001年1月1日00:00:00以来的刻度数)。
用于表示公元0001年1月1日00:00:00到公元9999年12月31日23:59:59之间的日期和时间。应该足够使用了。
时间值:以100毫微秒为单位进行计量,该单位称为刻度(1秒=1千万个时间值)。

构造函数:初始化时间变量
DateTime(long ticks);//将变量初始化为指定的刻度数。
DateTime(int 年,int 月,int 日);//将变量初始化为指定的年月日
DateTime(int 年,int 月,int 日,int 时,int 分,int 秒);
DateTime(int 年,int 月,int 日,int 时,int 分,int 秒,int 毫秒);

获取当前时间
System.DateTime curDT=new System.DateTime();
curDT=System.DateTime.Now;
记得必须使用前缀System.

属性:用于获取指定时间的任何部分,包括星期、一年的第几天
Year
Month
Day
Hour
Minute
Second
Millisecond
Date 获取此实例的日期部分(时间值设置为00:00:00)
TimeOfDay 获取此实例的时间部分(精确到刻度数,小数点后7位)
DayOfWeek 获取此实例所表示的日期是星期几
DayOfYear 获取此实例所表示的日期是该年中的第几天(介于 1 和 366 之间)
Ticks 获取此实例的刻度数

方法:主要是增加、减少操作
Add(TimeSpan value); 将指定的TimeSpan的值加到此实例的值上
AddYears();
AddMonths();
AddDays();
AddHours();
AddMinutes();
AddSeconds();
AddMilliseconds();
AddTicks(long value); 将指定的刻度数加到此实例的值上
可以在DateTime实例上加年、月、日、时、分、秒、毫秒、刻度得到新的时间
加年、月时,使用int型变量,加刻度时使用long型变量,其他为double型变量


DaysInMonth(int year,int month); 返回指定年份中指定月份的天数
IsLeapYear(int year); 返回指定的年份是否为闰年的指示

Parse(string s); 将日期时间字符串表示转换成 DateTime
例如:System.DateTime myDT=System.DateTime.Parse("2006-10-12 23:35:16");

TimeSpan Subtract(DateTime value); 从此实例中减去指定的日期和时间。
DateTime Subtract(TimeSpan value); 从此实例中减去指定持续时间。
日期-日期,返回的是时间间隔TimeSpan
日期-间隔,返回的是时期


自定义输出格式
系统提供了多个控制输出格式的函数,感觉还是自定义输出格式比较直接,看示例
System.DateTime myDT = new System.DateTime(2005,12,4,10,30,0);
myDT.ToString("yyyyMMdd") //20051204
myDT.ToString("yyyy-MM-d") //2005-12-4
myDT.ToString("yyyy-MM-dd") //2005-12-04
myDT.ToString("yyyy年MM月dd日") //2005年12月04日
myDT.ToString("yyyy'<font color=\"red\">'年'</font>'MM月dd日") //200512月04日



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#292005/12/20 10:19:35
说明:
ToString()中的字符串称作格式字符串。y、M、d为格式模式。
模式是区分大小写的。
使用双位的月、日模式,当月份、日期为单位数时,将添加一位前导 0。
未定义为格式模式字符的字符按其原义输出。
如果要输出定义为格式模式字符的字符,请用单引号将其括起来。

其他格式模式
gg 公元
h
hh 12小时制的小时
H
HH 24小时制的小时
m
mm 分钟
s
ss 秒
f、ff、fff、ffff、fffff、ffffff、fffffff、 秒的小数1至7位
t
tt A/P(M)上/下(午)
z、zz、zzz 时区偏移量
: 默认时间分隔符
/ 默认日期分隔符
ddd 周缩写
dddd 周全名



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#302005/12/20 10:23:54
·TimeSpan 类型

表示一个时间间隔。TimeSpan 实例的值表示一个时间段。该值是实例中包含的刻度数。
可以按“[-]d.hh:mm:ss.ff”格式将 TimeSpan 表示为一个字符串,其中
-:是用于表示负 TimeSpan 值的可选符号
d:天,
hh:小时
mm:分钟
ss:秒
ff:秒的小数部分
TimeSpan 使用的最长时间单位为天。
示例:System.TimeSpan diff1=System.TimeSpan(1,1,1,1);
定义了一个时间间隔,其值为1天1小时1分1秒

更多内容请看这里