private void DisplayResivedMessage() { string MsgType = message.Split('|')[1]; string user = message.Split('|')[2]; string user_name = user.Split('¶')[1]; string user_id = user.Split('¶')[2]; int user_color = Convert.ToInt32(user.Split('¶')[3]); IPAddress user_ip = IPAddress.Parse(user.Split('¶')[4]); int user_pen_color = Convert.ToInt32(user.Split('¶')[5]); int user_pen_width = Convert.ToInt32(user.Split('¶')[6]); string user_paint_type = user.Split('¶')[7]; Pen p = new Pen(Color.FromArgb(user_pen_color), user_pen_width); p.StartCap = LineCap.Round; p.EndCap = LineCap.Round; string time = DateTime.Now.ToString("t"); CUser sender_user = new CUser(user_name, user_id, Color.FromArgb(user_color), user_ip,p,user_paint_type); switch (MsgType) { //Вход в чат case "i": AddText(textMessages," ***" + sender_user.name + " вошёл в чат***\n", "system","null"); SendData("r",'|' + sender_user.ID); if (me.ID != sender_user.ID && GetUserByID(sender_user.ID)==null) UsersListAdd(sender_user); break; //Выход из чата case "o": AddText(textMessages, " ***" + GetUserByID(sender_user.ID).name + " вышел из чата***\n", "system", "null"); if (GetUserByID(sender_user.ID)!=null) UsersListRemove(sender_user.ID); break; //Сообщение в общий чат case "m": AddText(textMessages, message.Split('|')[3] + "\n", "user", sender_user.ID); toolStripStatusLabel1.Text = "Последнее сообщение полученно " + time; break; //Сообщение о присутсвии в чате case "r": if (me.ID == (message.Split('|')[3]) & me.ID != sender_user.ID) UsersListAdd(sender_user); break; //Смена цвета чата case "cc": SetUserColor(sender_user.ID, user_color); AddText(textMessages, " ***Пользователь " + sender_user.name + " сменил свой цвет чата***\n", "system", sender_user.ID); break; //Смена имени case "nc": AddText(textMessages, " ***Пользователь сменил своё имя (" + GetUserByID(sender_user.ID).name + "->" + message.Split('|')[3] + ")***\n", "system", "null"); GetUserByID(sender_user.ID).name = message.Split('|')[3]; users_listbox.Items[GetUserPos(sender_user.ID)] = message.Split('|')[3]; ts_name.Text = me.name; if (PageIsSet(sender_user) != null) PageIsSet(sender_user).Text = sender_user.name; break; //Прием файла case "sf": if (me.ID == (message.Split('|')[3])) { int k = GetFormNum(); rf[k] = new transferfile_form(me, sender_user, Convert.ToInt32(message.Split('|')[7]), message.Split('|')[4], message.Split('|')[8], k,Int32.Parse( message.Split('|')[9])); rf[k].Show(); } break; //Подтверждение приема case "rf": if (me.ID == (message.Split('|')[3])) { int n = Int32.Parse(message.Split('|')[5]); if (rf[n] != null) { rf[n].heformnum = Int32.Parse(message.Split('|')[6]); rf[n].bw_sender.RunWorkerAsync();} } break; //Отказ от файла case "cf": if (me.ID == (message.Split('|')[3])) { int n=Int32.Parse(message.Split('|')[4]); rf[n].lbl_state.Text = "Пользователь отказался от вашего файла"; rf[n].send_btn.Enabled = true; rf[n].choosefile_btn.Enabled = true; } break; //Прерывание передачи case "fc": if (me.ID == (message.Split('|')[3])) { int n = Int32.Parse(message.Split('|')[4]); if (rf[n] != null) rf[n].client.Close(); } break; //Создание секретного чата case "nsc": if (me.ID == (message.Split('|')[3])) { CreateSecretChat(sender_user); } break; //Сообщение в секретный чат case "scm": if (me.ID == (message.Split('|')[3])) { if (PageIsSet(sender_user) == null) { CreateSecretChat(sender_user); } AddText(tabControl.TabPages["tab"+sender_user.ID].Controls["rtb"+sender_user.ID] as RichTextBox, message.Split('|')[4] + "\n", "user", sender_user.ID); if (tabControl.TabPages["tab" + sender_user.ID] != tabControl.SelectedTab) { tabControl.TabPages["tab" + sender_user.ID].Tag = 1; } } tabControl.SelectedTab.Text = tabControl.SelectedTab.Text; toolStripStatusLabel1.Text = "Последнее сообщение полученно " + time; break; //Запрос обновления списка пользователей case "rl": SendData("rla","|"+sender_user.ID); break; //Ответ на запрос обновления списка пользователей case "rla": if (me.ID == (message.Split('|')[3])) { if (GetUserByID(sender_user.ID) != null) GetUserByID(sender_user.ID).Refresh(); else UsersListAdd(sender_user); } break; //Сообщения в канал case "chm": if (PageIsSet(message.Split('|')[3])!=null) { AddText(tabControl.TabPages["Chanel_tab_" + message.Split('|')[3]].Controls["Chanel_rtb_" + message.Split('|')[3]] as RichTextBox, message.Split('|')[4] + "\n", "user", sender_user.ID); } break; //Рисование case "d": if (sender_user.ID != me.ID) { int x1 = Convert.ToInt32(message.Split('|')[3]); int y1 = Convert.ToInt32(message.Split('|')[4]); int x2 = Convert.ToInt32(message.Split('|')[5]); int y2 = Convert.ToInt32(message.Split('|')[6]); switch (message.Split('|')[7]) { case "p": PaintLINE(x1, y1, x2, y2, sender_user.P_Pen); break; case "l": PaintLINE(x1, y1, x2, y2, sender_user.P_Pen); break; case "e": PaintEllips(x1, y1, x2, y2, sender_user.P_Pen,sender_user.paint_type); break; case "r": PaintRectangle(x1, y1, x2, y2, sender_user.P_Pen, sender_user.paint_type); break; } PBboard.Refresh(); toolStripStatusLabel1.Text = "Последний 'художник' " + sender_user.name; } break; //Смена вида рисования case "pc": GetUserByID(sender_user.ID).P_Pen = sender_user.P_Pen; GetUserByID(sender_user.ID).paint_type = sender_user.paint_type; break; //Отчистка доски case "bc": PBboard.Image = Image.FromFile(Environment.CurrentDirectory + @"\white.bmp"); toolStripStatusLabel1.Text = "Последний 'художник' " + sender_user.name; break; #region knb //Предложение сыграть в игру КНБ case "g_knb": if (me.ID == (message.Split('|')[3])) { DialogResult d = MessageBox.Show(sender_user.name + " предлагает Вам сыграть в КНБ, высогласны?", "Предложение развлечься", MessageBoxButtons.YesNo); if (d == DialogResult.Yes) { SendData("g_knb_yes", "|" + sender_user.ID); f = new f_GameKNB(sender_user, me); f.Show(); } else { SendData("g_knb_no", "|" + sender_user.ID); } } break; //Пользователь согласился играть в КНБ case "g_knb_yes": if (me.ID == (message.Split('|')[3])) { f = new f_GameKNB(sender_user, me); f.Show(); } break; //Пользователь отказался играть в КНБ case "g_knb_no": if (me.ID == (message.Split('|')[3])) { MessageBox.Show(sender_user.name + " отказался играть с вами!"); } break; //Пользователь выбрал элемент КНБ case "g_knb_vybral": if (me.ID == (message.Split('|')[3]) || me.ID == sender_user.ID) { if (me.ID == (message.Split('|')[3])) { f.prot_vybor = (message.Split('|')[4]); f.l_K.Visible = false; f.l_N.Visible = false; f.l_B.Visible = false; } if (((f.my_vybor != "") && (me.ID == message.Split('|')[3])) || ((f.prot_vybor != "") && (me.ID == sender_user.ID))) { switch (f.prot_vybor) { case "K": f.l_choose.Image = arrok__chat.Properties.Resources.web; break; case "N": f.l_choose.Image = arrok__chat.Properties.Resources.cut; break; case "B": f.l_choose.Image = arrok__chat.Properties.Resources.copy; break; } if (((f.my_vybor == "K") && (f.prot_vybor == "N")) || ((f.my_vybor == "N") && (f.prot_vybor == "B")) || ((f.my_vybor == "B") && (f.prot_vybor == "K"))) { MessageBox.Show("Вы выйграли"); f.l_my_number.Text = (Convert.ToInt32(f.l_my_number.Text) + 1).ToString(); } else if (f.prot_vybor == f.my_vybor) { MessageBox.Show("Ничья"); f.l_my_number.Text = (Convert.ToInt32(f.l_my_number.Text) + 1).ToString(); f.l_prot_number.Text = (Convert.ToInt32(f.l_prot_number.Text) + 1).ToString(); } else { MessageBox.Show("Вы проиграли"); f.l_prot_number.Text = (Convert.ToInt32(f.l_prot_number.Text) + 1).ToString(); } f.l_K.Visible = true; f.l_N.Visible = true; f.l_B.Visible = true; f.l_choose.Image = arrok__chat.Properties.Resources.user; f.b_K.Visible = true; f.b_N.Visible = true; f.b_B.Visible = true; f.b_choose.BackgroundImage = arrok__chat.Properties.Resources.user; f.b_choose.Enabled = false; f.my_vybor = ""; f.prot_vybor = ""; } } break; #endregion } }
private int GetFormNum() { int n=0; foreach (transferfile_form frm in rf) { if (frm == null) return n; n += 1; } transferfile_form[] rff=new transferfile_form[rf.Length]; rf.CopyTo(rff, 0); rf= new transferfile_form[rff.Length + 1]; rff.CopyTo(rf, 0); return n; }
private void user_conMenu_sendFile_Click(object sender, EventArgs e) { int k = GetFormNum(); rf[k] = new transferfile_form(me,users[users_listbox.SelectedIndex],k); rf[k].Show(); }