2、在该网站中添加Default.aspx、Content.aspx 和List.aspx3 个Web 页面,其中Default.aspx 页面为聊天室的主页面,Content.aspx 页面用来显示用户的聊天信息,List.aspx 页面用来显示在线用户的列表。 3、在该网站中添加一个Global.asax,用来初始化Application 对象值。
该聊天室是使用Application 对象实现的,在应用程序启动时,应在Application 对象的Application_Start事件中将所有数据初始化。代码如下:
voidApplication_Start(object sender, EventArgs e) {
// 在应用程序启动时运行的代码//建立用户列表 string user = \"\";//用户列表 Application[\"user\"] = user;
Application[\"userNum\"] = 0; string chats = \"\";//聊天记录
Application[\"chats\"] = chats; //当前的聊天记录数
Application[\"current\"] = 0;
}
结束程序时的代码如下:
voidApplication_End(object sender, EventArgs e) {
// 在应用程序关闭时运行的代码 Application[\"user\"] = \"\"; Application[\"chats\"] = \"\"; }
在聊天室主页面中单击“发送”按钮时,首先调用Application 对象的Lock 方法对所有Application 对象进行锁定,然后判断当前聊天信息的记录数是否大于20。如果大于,则清空聊天记录,并重新加载用户的聊天记录;否则,将把聊天内容、用户名和发信息时间保存
在Application 对象中。代码如下:
protectedvoidbtnSend_Click(object sender, EventArgs e) {
intP_int_current = Convert.ToInt32(Application[\"current\"]);
Application.Lock(); if (P_int_current == 0 || P_int_current> 20) {
P_int_current = 0;
Application[\"chats\"] = Session[\"userName\"].ToString() + \"
说:\" +txtMessage.Text.Trim() + \"(\" + DateTime.Now.ToString() + \")\";
} else {
Application[\"chats\"] = Application[\"chats\"].ToString() + \ + Session[\"userName\"].ToString() + \"说:
\" +txtMessage.Text.Trim() + \"(\" + DateTime.Now.ToString() + \")\"; }
P_int_current += 1;
Application[\"current\"] = P_int_current; Application.UnLock();
} 单击“退出”按钮时,代码如下:
protectedvoidbtnExit_Click(object sender, EventArgs e) {
Application.Lock();
stringP_str_userName = Application[\"user\"].ToString(); Application[\"user\"] = P_str_userName.Replace(Session[\"userName\"].To String(), \"\"); Application.UnLock();
Response.Write(\"\") ; }
显示聊天信息页面Content.aspx 加载时,从Application 对象中读取保存的聊天信息,并将其显示在TextBox文本框中,Content.aspx 页面的Page_Load事件代码如下:
protectedvoidPage_Load(object sender, EventArgs e) {
intP_int_current = Convert.ToInt32(Application[\"current\"]); Application.Lock();
stringP_str_chats = Application[\"chats\"].ToString(); string[] P_str_chat = P_str_chats.Split(','); for (inti = P_str_chat.Length - 1; i>= 0; i--) {
if (P_int_current == 0) {
txtContent.Text = P_str_chat[i].ToString(); } else {
txtContent.Text = txtContent.Text + \"\\n\" + P_str_chat[i].ToString(); }
}
}
Application.UnLock();
List.aspx页面显示在线用户的列表,代码如下:
protectedvoidPage_Load(object sender, EventArgs e) {
ArrayListItemList = newArrayList(); Application.Lock(); stringP_str_names; //已在线的用户名string[] P_str_user; //用户在线数组
intP_int_num =Convert.ToInt32(Application[\"userNum\"]);
P_str_names = Application[\"user\"].ToString(); P_str_user = P_str_names.Split(','); for (inti = (P_int_num - 1); i>= 0; i--) {
if(P_str_user[i].ToString ()!=\"\") ItemList.Add(P_str_user[i].ToString()); }
lbList.DataSource =ItemList; lbList.DataBind(); Application.UnLock(); } 登录界面代码如下:
protectedvoidPage_Load(object sender, EventArgs e) {
intP_int_judge = 0;
P_int_judge = Convert.ToInt32(Request[\"value\"]); if (!IsPostBack) {
if (P_int_judge == 1)
Response.Write(\"\"); } }
protectedvoidbtnLogin_Click(object sender, EventArgs e) {
Application.Lock(); intP_int_num; //在线人数stringP_str_name; //登录用户stringP_str_names; //已在线的用户名string[] P_str_user; //用户在线数组
P_int_num = int.Parse(Application[\"userNum\"].ToString()); if (TextBox1.Text == \"\") {
Response.Write(\"\");
{
P_str_name = TextBox1.Text.Trim();
P_str_names = Application[\"user\"].ToString(); P_str_user =
P_str_names.Split(','); for (inti = 0; i<= P_int_num - 1; i++) {
if (P_str_name == P_str_user[i].Trim()) { intP_int_judge = 1;
Response.Redirect(\"Login.aspx?value=\" + P_int_judge);
TextBox1.Focus();
} else
} } if (P_int_num == 0)
Application[\"user\"] = P_str_name.ToString(); else Application[\"user\"] = Application[\"user\"] + \ + P_str_name.ToString(); P_int_num += 1;
Application[\"userNum\"] = P_int_num;
Session[\"userName\"] = TextBox1.Text.Trim(); Application.UnLock();
Response.Redirect(\"Default.aspx\"); } }
protectedvoidbtnExit_Click(object sender, EventArgs e) {
Response.Write(\"\"); } 相关设计界面:
1、Default.aspx 2、Content.aspx
3、List.aspx3 4、Login.aspx
生成结果截图:
因篇幅问题不能全部显示,请点此查看更多更全内容