用c#做聊天软件
做一個即時聊天軟件
需要:本地服務器 mssqlserver ,工具:visual studio 2017
A,注冊,2種方式,1,用多個groupbox把密碼放在最后填寫,2,直接填寫密碼,給出賬號,資料后續自己填寫。
Point1:picturebox 圖片框點擊時,彈出一個模態窗口,選完圖片后關閉,然后窗口
有listview 大圖標,imagelist,imagelist綁定listview。
1,窗體加載時顯示所有圖片。先在imagelist添加大小相似的圖片,50X50px
for (int i = 0; i<= imagelist1.Images.Count;i++)
{
//把圖片添加到listview
ListViewItem lvi = new ListViewItem();
//下標
lvi.ImageIndex = i;
listview1.Items.Add(lvi);
}
2,listview的雙擊事件,傳下標值與圖片
Program.Index = listview1.SelectedItems[0].ImageIndex;
Program.img = imagelist.Images [listview1.SelectedItems[0].ImageIndex];
注冊完之后,返回一個賬號,即插入的一個賬號。
B,登錄,驗證賬號與密碼,但為了流量攻擊,可以賬號與密碼一起驗證。可用磁盤寫入來記住密碼,最近登錄,最近的幾個賬號等等。
C,主界面 用到第三方控件,chatlistbox 就是根據我的賬號在朋友表和用戶表中查出我的好友的信息。并把我的信息展示在主界面。
代碼 :
//創建一個分組
ChatListItem item1 = new ChatListItem(“我的好友”);
//把分組添加到控件中
clb_friend.Items.Add(item1);
//ado.net 的datatable dt連接數據庫代碼。
**********關鍵點,chatlistbox里字段的使用,賦值
foreach(DataRow r in dt.Rows)
{
ChatListSubItem sb = new ChatListSubItem();
sb.DisplayName = r[].ToString();//昵稱
sb.HeadImage = …//頭像
sb.ID = …//id …
item.SubItems.Add(sb);
}
還有一個,控件的雙擊子項
clb.DoubleClickSubItem += clb_DoubleClickSubItem;
生成一個方法,
private void CLB_DoubleClickSubItem(object sender, ChatListEventArgs e)
{
//雙體得到好友id,然后id傳值到聊天窗口。
string TAID = (sender as ChatListBox).SelectSubItem.ID.ToString();
Frm_Chating fc = new Frm_Chating();
fc.TID = TAID;
fc.Show();
}
…對于我的信息,可以查出來,像簽名這些用到字符串的截取操作…
為了鼠標懸浮在控件上有提示,用了tooltip ttp
D,聊天,即時聊天,當然聊天這個功能最重要了。
原理,主界面timer一直查發給我的消息。用datatabel
給出提示,對應頭像閃爍,或發出聲音。
雙擊chatlistbox的項時有聊天窗口彈出。這個屬于主界面。
學習的點,SoundPlayer sp = new SoundPlayer(“聲音文件”);
sp.Play(); sp.Stop();
FromUserID = 好友id
閃爍,clb.GetSubItemsById(好友id)[0].IsTwinkle = true;
聊天窗口,點擊發送,在消息表中插入數據。
用到timer,收到給我的消息,先把消息改為已讀,再把我的消息展示在文本框。
E,好友的添加與刪除。
先查找到好友。多條件組合模糊查詢。
1(同意)2(要允許)3(拒絕)是哪種驗證方式,查出來,給去相應提示。在加之前判斷是否加的是自己,是已經是好友。
是,給出相應提示。已經是好友就在friends表里寫兩條sql語句,返回值都為1則是好友。
是要驗證的情況,直接在消息表中插入系統消息。在用戶上線時判斷用戶是否同意,同意,則插入兩條數據在消息表。
主界面一直查消息,系統消息。
1,修改為已讀,得到消息,關鍵字內容,字符串Contains判斷。朋友表插入數據。
最后總結,主要增刪改查,對sql代碼的敏感,次要第三方控件的運用。
總結
- 上一篇: 【笔记】Python算法教程(1)
- 下一篇: 谈ISO9000-3内容及其与CMM关系