2015-01-31 3 views
0

Я работаю над автономным чат-приложением для сторонней сети. Я могу входить и отправлять и получать сообщения между пользователями в порядке. То, что я застрял, имеет несколько вкладок, каждая вкладка обменивается данными с определенным пользователем.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]); 
} 

Это прекрасно работает если я только общаюсь с одним пользователем.

Однако, когда я открываю сеанс с другим пользователем, элементы управления на всех страницах, а не только новые, меняются, чтобы отображать вновь созданный сеанс. Сообщения, отправленные или полученные на любой вкладке, отправляются/от пользователя, который недавно был создан.

Я ищу способ открытия нескольких вкладок и каждого из них для другого пользователя.

Я осмотрелся и не нашел решения. Я совершенно тупой.

+0

Похоже, что здесь есть ссылка, которая не обновляется. Содержимое вкладки содержит только два текстовых поля? Один для чата, а другой - для входа в чат для отправки; или это только одно текстовое поле с чатом, а текстовое поле для входа в чат делится между вкладками? – justderb

+0

@justderb На каждой вкладке есть текстовое поле для ввода сообщения, а также текстовое поле для сообщений, поступающих на каждую страницу. – Gavin

+0

@justderb Ok. То, что я сделал, изменило имя полей на идентификатор пользователя, с которого я отправляю/получаю сообщения. При отправке одного из них я получаю идентификатор из текстового поля и использую его для отправки сообщения. Это работает, но разве это так, как я должен это делать? – Gavin

ответ

0

Я не вижу, что userControl.tabControl1.TabPages[0] есть. Но вы обычно должны добавлять на них вкладки и элементы управления таким образом:

private void NewTab (string name, SteamID id) 
{ 
    var userControl = new ChatPage (name, id); 

    TabPage newTab = new TabPage(name); 
    newTab.Controls.Add(userControl); 

    tabControl1.TabPages.Add(newTab); 
}