1.将字符串NoList以','作为标记转换为字符串数组,用string[] arrList=NoList.Split(',')
2.关掉打开的当前窗口:
public static void CloseWindow(Page page)
{
string strScript="<script language=\"JavaScript\" type=\"text/javascript\">\n"+
"window.close();\n"+
"</script>\n";
page.Response.Write(strScript);
}
3.判断字符串是否为空:string.IsNullOrEmpty(this.str);
4.ViewState用法
if(ViewState["OperationType"]!=null)
{
return (string)ViewState["OperationType"];
}
5.this.Page.RegisterStartupScript("note","<script LANGUAGE = JScript>window.alert('保存成功!'); window.document.URL='Supervise.aspx';</script>");
6.Session能够进行页面之间的传值
如test1.aspx的页面类中付值Session["DirectoryName"] = aa[0].ToString();当页面有test1.aspx跳转到test2.aspx后在test2.cs中可以通过这样的方法取值
if(Session[DirectoryName]!=Null)
{
string temp=Session[DirectoryName];
}
7.另外一种页面间传值的方法是在test1.cs中 this.Response.Redirect("test2.aspx?id=6");
然后再test2.cs中通过这样的方法来取得该id
if (this.Request.QueryString["id"] == null)
{
string ID=this.Request.QueryString["AutoNo"].ToString().Trim();
}6,7两种方法在编程中会经常用到的
8. 在同一个页面之间不同函数间传值时ViewState的用处也很大
付值:ViewState["OperationType"]=1;
调用:
if (ViewState["OperationType"] != null)
{
return Convert.ToString(ViewState["OperationType"]);
}
9.对于用户从界面输入的信息,要注意进行字符校验,然后进行程序处理
一般采用这种方式
if (!this.CheckInput())
{
//处理过程
}
10.类型转换:int.Parse Convert.ToString() Convert.ToDateTime等等
11.编写程序时注意随时在不太好理解的地方加上注释,对一些常用的函数要做成公用的函数以便调用
12.为界面按钮添加事件
this.BtnDel.Attributes.Add("onclick","return confirm('确认删除?')");
13.有时候希望数据直接绑定到调用时定义的表dtTable,则采用out来进行数据回传,调用函数:GetDataTableFromID(id,out dtTable)
被调用函数:GetDataTableFromID(int id, out DataTable drReturn)
14.设置字符串形式如果data1为string型,data2位int型,data3为DateTime型,则按如下方式来写
string.Format("输出的三个数字为:'{0}',{1},'{2}'",data1,data2,data3),后面的数据data1,data2,data3将会代替{}中的内容输出。
15.设置一个实体类的属性:
private int m_intAutoID;
public int AutoID
{
get
{
return m_intAutoID;
}
set
{
m_intAutoID=value;
}
}
16.ArrayList的使用方法:
ArrayList 是一种动态数组,下面给出一个简单的例子:
ArrayList List=new ArrayList();
for(int i=0;i<10;i++)
List.Add(i);
List.RemoveAt(5);
for(int i=0;i<3;i++)
List.Add(i+20);
Int32[] values=(Int32[])List.ToArray(typeof(Int32));
17.GridView中队LinkButton模版列的操作:
前台界面
<asp:TemplateColumn HeaderText="操作">
<HeaderStyle HorizontalAlign="Center" Width="15%"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:LinkButton id="lnbView" CommandName="View" CausesValidation="False" Runat="server">查看</asp:LinkButton>
<asp:LinkButton id="lnbErase" CommandName="Erase" CausesValidation="False" Runat="server">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
后台代码的处理部分
protected void drgDisplay_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
switch (e.CommandName)
{
case "View":
//处理部分
break;
case "Erase":
//处理部分
break;
}
}
18.获得一个随机数:
string temp;
temp=new Random().Next(10000,99999).ToString();
19.在html界面定义一个javascript函数,然后在服务器端调用该函数
html界面:
<script type="text/javascript" lanaguage="javascript">
function cwin(strDepart)
{
var a=strDepart;
var mikecatstr=window.ShowModalDialog('../../UserControl/UcSelectPerson.aspx',a,'dialogHeight:500px;dialogWidth:585px');
//处理部分
}
后台调用代码:
string a="343";
this.ImaBu.Attributes.Add("onclick","cwin("+a+")");
20.一般在后台弹出提示框的写法: Response.write(<script>alert("请重先输入密码!")</script>)
也可以专门做一个提示函数放到公用方法中,然后在前台进行调用就可以了
函数: (假设这个函数在Share类中)
public static void PromptMessage(Page page,string strMessage)
{
StringBuilder sb=new StringBuilder("<script language='javascript'> window.");
sb.Append("alert('");
sb.Append(StringUtility.HtmlMsgStringFormatFix(strMessage));
sb.Append("')");
sb.Append("</script>");
if(!page.ClientScript.IsClientScriptBlockRegistered("display"))
{
page.ClientScript.RegisterStartupScript(page.GetType(),"display",sb.ToString());
}
}
后台程序调用
Share.PromptMessage(this.Page, "联系人手机号不能为空!");
21. 用javascript脚本输出界面的一个单元格,其中有小时,分钟的选择的两个下拉选择框
tableDate = mainIFrame.document.createElement("TABLE");
_TR = tableDate.insertRow();
_TD = _TR.insertCell();
_TD.height = 1;
_TD.bgColor = "black";
_TR = tableDate.insertRow();
_TD = _TR.insertCell();
_TD.innerHTML="<table cellspacing=0 cellpadding=0 class=calendar style='border:0px solid;width:100%'>"
+"<tr><td width=60 align=center>时间:</td><td><select id=\"drophour\" onchange=\"return parent.ChangeHour(this);\" ><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option><option>21</option><option>22</option><option>23</option></select></td>"
+"<td>点</td>"
+"<td><select id=\"drophour\" onchange=\"return parent.ChangeMinute(this);\"><option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option><option>21</option><option>22</option><option>23</option><option>24</option><option>25</option><option>26</option><option>27</option><option>28</option><option>29</option><option>30</option><option>31</option><option>32</option><option>33</option><option>34</option><option>35</option><option>36</option><option>37</option><option>38</option><option>39</option><option>40</option><option>41</option><option>42</option><option>43</option><option>44</option><option>45</option><option>46</option><option>47</option><option>48</option><option>49</option><option>50</option><option>51</option><option>52</option><option>53</option><option>54</option><option>55</option><option>56</option><option>57</option><option>58</option><option>59</option></select></td>"
+"<td width='150' align=left>分</td>"
+"</tr></table>";
22.在服务器后台写script脚本,打开一个新页面
Share.OpenWindow(this,"ExportToExcel.aspx?DepartmentNo="+DepartNo)
在Share中的OpenWindow函数:
public static void OpenWindow(Page page,string strUrl)
{
string strScript;
strScript="<script language=javascript>";
strScript+="var intHeight=600;";
strScript+="var intWidth=window.screen.width-150;";
strScript+="var strFeature='height='+intHeight+',width='+intWidth+',left=80,toolbar=no,status=yes,menubar=yes,location=yes,resizable=yes,scrollbars=yes';";
strUrl="window.open('"+strUrl+"','_blank',strFeature,true);";
strScript+=strUrl;
strScript+="</script>";
if (!page.ClientScript.IsStartupScriptRegistered("windowOpen"))
page.ClientScript.RegisterStartupScript(page.GetType(), "windowOpen", strScript);
}
23.GridView的数据绑定
前台html:
<asp:TemplateField HeaderText="标 题">
<ItemTemplate>
<asp:HyperLink ID="HyperLinkTitle" runat="server" Text='<%# Eval("Title") %>' CssClass="link3"></asp:HyperLink>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" Wrap="False" />
<HeaderStyle HorizontalAlign="Center" Wrap="False" />
</asp:TemplateField>
<asp:TemplateField HeaderText="时 间">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("AddTime","{0:yyyy-MM-dd HH:mm}") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="120px" Wrap="False" />
<HeaderStyle HorizontalAlign="Center" Width="120px" Wrap="False" />
</asp:TemplateField>
<asp:TemplateField HeaderText="信息类别">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# htTypeId[Eval("HotLineTypeID")] %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="100px" Wrap="False" />
<HeaderStyle HorizontalAlign="Center" Width="100px" Wrap="False" />
</asp:TemplateField>
对于Text='<%# Eval("Title")这种格式,当指定GridView绑定的数据源后,会自动在界面上绑定出Title字段的数据
对于Text='<%# htTypeId[Eval("HotLineTypeID")] %>'则需要在后台程序中添加这样的程序
public Hashtable htTypeId
{
get
{
if (ViewState["htTypeId"] != null)
{
return (Hashtable)ViewState["htTypeId"];
}
else
{
return null;
}
}
set
{
ViewState["htTypeId"] = value;
}
}
将返回的值进行绑定
24.关于用户控件
在页面中重复出现较多的模块,我们可以把它做成用户控件,比如网站的头尾模块。这样我们在每个页面需要添加头尾模块时只需要
将这个控件拖入网页中即可,用户控件以.ascx结尾。
25.自定义控件,对于一些功能模块,如果使用频繁,我们也可以把它做成一个控件,比如日期控件(在论坛上已提供下载)需要使用时直接从面板中拖入即可,一般是建一个类库,
调试完成后,编译成.dll文件,在工具箱中点击选择项,将该dll文件添加进取,就可以像普通TextBox一样去使用它了。
26.前台用脚本编写dropDownList的onchange事件,后台编写控件的触发脚本
drpType.Attributes.Add("onchange",changeType();");
前台:
<script language="javascript">
function changeType()
{
if(document.all.drpYwlb.value!="")
{
if(document.all.drpYwlb.value!="Select")
{
eval("document.all.querycondition"+document.all.drpYwlb.value+".style.display=''")
}
}
else
{
for(iii=1;iii<5;iii++)
{
eval("document.all.querycondition"+iii+".style.display='none'");
}
}
}
27.GridView中如何对其所绑定的模版列数据进行操作
前台:<asp:TemplateField HeaderText="序号">
<ItemStyle HorizontalAlign="Center" Wrap="False" Width="40px" />
<ItemTemplate>
<asp:Label ID="lblIndex" runat="server">Label</asp:Label>
</ItemTemplate>
<HeaderStyle Width="40px" />
</asp:TemplateField>
咱们在后台对lblIndex这个Label进行处理
protected void gvPeople_RowDataBound(object sender,GridViewRowEventArg e)
{
if(e.Row.RowType==DataControlRowType.DataRow)
{
Label lblIndex;
lblIndex=(Label)e.Row.Cell[1].FindControl("lblIndex");
lblIndex.Text=Convert.ToString(2);
}
}
28.有些数据字段在程序控制中一般以1,2,3,4..等等进行判断,但是为了增强程序的易读性,需要使用enum将其所代表的意思表达出来,
可以单独做一个类来实现这个功能
如:
namespace enumDemo
{
public enum RightEnum
{
//组,用户,角色维护
GroupEdit=1,
//功能项维护
FunctionEdit=2,
//权限点维护
RightEdit=3,
}
}
引用时,直接用RightEnum.GroupEdit即代表1,这样会使程序更清晰。
29.弹出页返回时对上级页界面控件的编程
dialogArguments.document.all.txtOriginRecord.value="none";
30.在单元格中检索按钮的onmouseover onmouseout事件的编程:
<TD align="right"><INPUT class="smbuttonStyle" id="Submit1" onmouseover="blackFont(this)";" onmouseout="whiteFont(this);"
type="submit" value="检索" name="submitb" runat="server" ></TD>
脚本程序:
function blackFont(param){
var blackVar = '#000000';
try
{
if(!document.layers){
param.style.color=blackVar;
}
}
catch(e)
{}
}
31.几种常用的快捷键
Ctrl+A:全选
Ctrl+S:保存
Ctrl+F:查找
Ctrl+Z:撤销
F5:启动调试
F10:单步调试,不进入下级函数体
F11:单步调试,进入下级函数体
F7: 页面和后台代码页的切换
F1:帮助
32.获取服务器上虚拟应用程序根路径: Context.Request.ApplicationPath
例如在web项目test下有一个Default1.aspx和一个Default2.aspx页面
则从Default1.aspx跳转到Default2.aspx的代码为:
Response.Redirect(Context.Request.ApplicationPath+"Default2.aspx");
33.一个实用的加密函数
public static string Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//把字符串放到byte数组中
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//建立加密对象的密钥和偏移量
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法
//使得输入密码必须输入英文文本
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
//Write the byte array into the crypto stream
//(It will end up in the memory stream)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Get the data back from the memory stream, and into a string
StringBuilder ret = new StringBuilder();
foreach(byte b in ms.ToArray())
{
//Format as hex
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
34.一个解密字符串:
public static string Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Put the input string into the byte array
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for(int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
//建立加密对象的密钥和偏移量,此值重要,不能修改
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
//Flush the data through the crypto stream into the memory stream
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Get the decrypted data back from the memory stream
//建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
35.程序中加密调用:Person.PerPwd = Security.Encrypt(this.PerPwd.Text, "&!#-?,:*");
采用这种方法可以把加密后的字符串保存到数据库中,即使有人看到数据库也是一个加密后的字符串,增强了系统的安全性。
36.HTML页面中引用.css文件
<LINK href="../css/main.css" type="text/css" rel="stylesheet">
注意"../"的写法如果要引用css的页面为A页面,则../表示A页面的上一级目录
37.StringBuilder的用法
StringBuilder sb=new StringBuilder();
sb.Append("1=1");
if(this.SearchValue.Text!="")
{
sb.AppendFormat("and {0} like '%{1}%'",this.SearchType.SelectedValue,this.SearchValue.Text);
}
38.判断一个字符串是否属于另一个字符串一部分
string temp="chinese";
int flag=temp.IndexOf("ese")
则 flag=4 ("ese"字符串在temp中的位置)
如果 int flag=temp.IndexOf("iceworld");
则 flag=-1("iceworld"不属于temp字符串的一部分)
39.获取与服务器上虚拟路径相对应的物理文件路径
string s1=DateTime.Now.ToString("yyyyMM"); (200612)
string s2=DateTime.Now.ToString("dd"); (29)
path=Server.MapPath("/book/upload/"+s1+"/"+s2);
if(!Directory.Exists(path))
{
DirectoryInfo di=Directory.CreateDirectory(path);
}
40.再编程中可能会出现错误,不同的错误提示的信息不同,有些很难懂,我们可以在一个类中专门对一些常见的错误进行处理。
如在ExceptionHandler类中定义这个的函数
pullic static string DealError(string errmsg)
{
if(errmsg.IndexOf(Index was outside the bounds of the array.">=0)
{
return "数组超界,请检查!";
else if( errmsg.IndexOf("There is no row at position 0")>=0)
{
return "第0行没有数据!";
}
}
}
这样在程序中为了方便读取异常信息,可以这样写
string result=semiManage.Update();
Response.Write("<script>alert('"+ExceptionHandler.DealErrorMsg(result)+"')</script>");
41.对于一些公用的函数,我们可以也单独建一个类进行集中处理
1.安全转换字符串为数字
public static decimal ConvertToNum(object obj)
{
try
{
return Convert.ToDecimal(obj);
}
catch
{
return 0;
}
}
2.格式化数字
public static string FormatDecimal(string NumString)
{
try
{
decimal tempvalue=Convert.ToDecimal(NumString);
return tempvlue.ToString("0.####");
}
catch
{
return "";
}
}
3.格式化日期
public static string FormatDate(string DateString)
{
try
{
DateTime tempvalue=Convert.ToDateTime(DateString);
return tempvalue.ToString("yyyy-MM-dd");
}
catch
{
return "";
}
}
4.格式化字符串函数
public string FormatString(string str)
{
if(str!=null)
{
str=str.Trim();
str=str.Replace("'","’")
str=str.Replace("|","");
}
return str;
}
5.检查字符串是否是合法数字
public static bool IsNumber(string NumString)
{
return Regex.IsMatch(NumString,"^\\d+(?:\\.\\d+)?$");
}
其中Regex属于System.Text.RegularExpressions这个命名空间
42.为了系统安全,用户长时间不使用系统以致session过期时,需要重先登陆才能继续使用系统
可以让每个页面继承一个基类BasicPage,基类中进行如下编码
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.Load+=new System.EventHandle(this.MainPage_Load);
}
private void MainPage_Load(object sender,System.EventArgs e)
{
if(Context.User.Identity.IsAuthenticated)
{
}
else
{
Response.Redirect("~/Login.aspx");
}
}
43.在类的组织中,如果有些类有公用的一些方法,可以抽象出一个基类,让其它类都继承这个基类,也可以再为基类定义一个接口,
便于实现多重继承;简单介绍一下一种多重继承方法。
A基类--A接口--A类
A基类--B接口--B类
AB类: A基类,A接口,B接口
注意在AB类的构造函数中需要实例化A,B两个类,则可以调用AB中的方法。
44.验证一个TextBox(例如名字为txtName)为必须输入或者限定其某种输入格式的方法
添加一个RegularExpressionValidator,然后指定其ControlToValidate的属性为txtName,
ErrorMessage显示如果输入出错时提示的信息;validationExpression属性如果不填,将对输入是否为空进行校验;
如果输入一个正则表达式,则如果输入格式有误,会提示错误信息。
45.对用户输入的字符串进行加密
string password=FormsAuthentication.HashPasswordForStoringInConfigFile(this.Password.Text,"MD5");
其中 FormsAuthentication类属于System.Web.Security命名空间。
46.DataGrid中删除一条记录时,要实现立即刷新并且有相应删除提示(下边为Favorite.aspx页面的部分html代码)
可以增加一个模版列
<asp:TemplateColumn HeaderText="修改">
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:HyperLink NavigateUrl='<%# "/Company/Chance/Favorite.aspx?type=DEL&Info_ID="+DataBinder.Eval(Container.DataItem,"Info_ID") %>' Runat="server" ID="Hyperlink1">
删除
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateColumn>
然后在后台进行处理
if(Request.QueryString["type"].ToUpper() == "DEL")
this.DelFavorite();
在DelFavorite()函数中通过int Info_ID = Int32.Parse(this.operate.FormatString(Request.QueryString["Info_ID"].ToString()));
获取的ID就能够删除这一条记录并给出相应提示信息。
47.
Request.ServerVariables("Path_Info")
客户端提供的路径信息
Request.ServerVariables("Remote_Addr")
发出请求的远程主机的IP地址
Response.Redirect(Request.ServerVariables["PATH_INFO"]);
通过上面这种方式可以实现刷新本页面功能。
48.cs结构程序中的假进度条
在主要处理函数开始处定义
int roll=0;
在主函数处理环节中
if(roll%2==0)
{
this.ProgressBar(5000);
}
结尾处
roll++;
if(roll==100)
{
roll=0;
}
private void ProgressBar(int count)
{
progressBar.Value=1;
progressBar.Minimum=1;
progressBar.Maximum=count;
for(int step=1;step<count;step++)
{
progressBar.Value =step;
}
}
这样主函数每执行两遍,会将进度条滚动一次,提示用户程序正在处理中。
49.从xml中取出相应信息(bak.config)
<?xml version="1.0"?>
<ProjectConnection>
<Project name="源数据库" select="true" remark="">
<BasiceData>server=10.210.5.184;database=cgHott;uid=cghot;pwd=5656;Pooling=true;Max Pool Size=10;Min Pool Size=0;Connection Lifetime=300;packet size=1000</BasiceData>
<BasiceData>server=10.210.5.154;database=cgHott;uid=cghot;pwd=565;Pooling=true;Max Pool Size=10;Min Pool Size=0;Connection Lifetime=300;packet size=1000</BasiceData>
</Project>
</ProjectConnection>
后台cs代码
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load("bak.config");
System.Xml.XmlNode root = doc.DocumentElement;
System.Xml.XmlNode target = root.SelectSingleNode("descendant::Project[@name='源数据库']");
strChecked = target.Attributes["select"].Value;
string strCon=target.ChildNodes[0].InnerXml;
则能够取到 strCon="10.210.5.184;database=cgHott;uid=cghot;pwd=5656;Pooling=true;Max Pool Size=10;Min Pool Size=0;Connection Lifetime=300;packet size=1000"
50.向xml文件中写入数据
strData为需要写入的字符串
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load("bak.config");
System.Xml.XmlNode root = doc.DocumentElement;
System.Xml.XmlNode target = root.SelectSingleNode("descendant::Project[@name='源数据库']");
if( target != null )
{
target.ChildNodes[0].InnerXml = strData;
System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter("bak.config",null);
writer.Formatting = System.Xml.Formatting.Indented;
doc.Save(writer);
writer.Close();
}
51.在程序里面调用web.config里面的SQL server连接字段
<appSettings>
<add key="wjcking"
value="SQL 连接字段"/>
</appSettings>
调用:
string sql_connection_string=System.Configuration.ConfigurationSettings.AppSettings["wjcking"];
52.
string currentLine = ...;
string[] items = currentLine.Split(new string[] { ", " }, StringSplitOptions.None);
53.
ComBox中输入字符超长时,Box长度随着字符长度而变化。
private void findWidthForDropDown(ComboBox comboBox)
{
bool isDatabound = comboBox.DataSource != null && comboBox.DisplayMember != null && comboBox.DisplayMember != "";
int widestWidth = comboBox.DropDownWidth;
string valueToMeasure;
int currentWidth;
using (Graphics g = comboBox.CreateGraphics())
{
for (int i = 0; i < comboBox.Items.Count; i++)
{
if (isDatabound)
valueToMeasure = (string)((DataRowView)comboBox.Items[i])[comboBox.DisplayMember];
else
valueToMeasure = comboBox.Items[i].ToString();
currentWidth = (int)g.MeasureString(valueToMeasure, comboBox.Font).Width;
if (currentWidth > widestWidth) { widestWidth = currentWidth; }
}
}
comboBox.DropDownWidth = widestWidth;
}
54.数组的定义
int[] array = new int[10]; // 整型一维数组
for (int i = 0; i < array.Length; i++)
array[i] = i;
or int[] test = new int[] { 1, 3, 4 };
int[,] array2 = new int[5,10]; // 整型二维数组
array2[1,2] = 5;
55.用正则表达式匹配
using System.Text.RegularExpressions;
Regex regex = new System.Text.RegularExpressions.Regex(正则);
regex.IsMatch(要匹配的字符串);
联系客服