Я работаю над автономным чат-приложением для сторонней сети. Я могу входить и отправлять и получать сообщения между пользователями в порядке. То, что я застрял, имеет несколько вкладок, каждая вкладка обменивается данными с определенным пользователем.Tabbed Chat Application
У меня есть форма со списком пользователей и элемент управления вкладкой, в котором есть основная область для запуска команд, например, изменение псевдонима и установка вашего статуса. Чтобы начать чат, пользователь дважды щелкнет пользователя в списке пользователей, и откроется новая вкладка. Здесь я застреваю.
Я считаю, что я на правильном пути с этим, но не знаю, куда идти дальше. Я использую UserControl с элементом управления вкладкой, чтобы сделать TabPage для нового сеанса чата.
ChatPage.cs:
public partial class ChatPage : UserControl
{
public static string id;
public ChatPage (string name, string idd)
{
id = idd;
InitializeComponent();
this.friendPage.Text = name;
this.friendBox.KeyDown += new KeyEventHandler (friendBox_KeyDown);
}
public void friendBox_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Enter)
{
switch (this.friendBox.Text) {
default:
// Code for sending the chat message
break;
}
this.friendBox.Clear();
}
}
}
и открыть вкладку, я делаю это в главной форме:
Main.cs
private void NewTab (string name, SteamID id)
{
var userControl = new ChatPage (name, id);
tabControl1.TabPages.Add (userControl.tabControl1.TabPages[0]);
}
Это прекрасно работает если я только общаюсь с одним пользователем.
Однако, когда я открываю сеанс с другим пользователем, элементы управления на всех страницах, а не только новые, меняются, чтобы отображать вновь созданный сеанс. Сообщения, отправленные или полученные на любой вкладке, отправляются/от пользователя, который недавно был создан.
Я ищу способ открытия нескольких вкладок и каждого из них для другого пользователя.
Я осмотрелся и не нашел решения. Я совершенно тупой.
Похоже, что здесь есть ссылка, которая не обновляется. Содержимое вкладки содержит только два текстовых поля? Один для чата, а другой - для входа в чат для отправки; или это только одно текстовое поле с чатом, а текстовое поле для входа в чат делится между вкладками? – justderb
@justderb На каждой вкладке есть текстовое поле для ввода сообщения, а также текстовое поле для сообщений, поступающих на каждую страницу. – Gavin
@justderb Ok. То, что я сделал, изменило имя полей на идентификатор пользователя, с которого я отправляю/получаю сообщения. При отправке одного из них я получаю идентификатор из текстового поля и использую его для отправки сообщения. Это работает, но разве это так, как я должен это делать? – Gavin