标签聊天应用程序

时间:2015-01-31 00:56:06

标签: c# .net winforms tabs

我正在为第三方网络开发一个独立的聊天应用程序。我能够登录并在用户之间发送和接收消息。我坚持的是拥有多个标签,每个标签与特定用户进行通信。

我有一个包含用户列表的表单和一个选项卡控件,该控件具有用于启动命令的主区域,例如更改昵称和设置状态。要开始聊天,用户将双击用户列表中的用户,并打开一个新选项卡。这就是我被卡住的地方。

我相信我已经走上了正轨,但不知道接下来要去哪里。我使用带有选项卡控件的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]);
}

只要我只与一个用户通信,这就可以正常工作。

但是,当我打开与不同用户的会话时,所有页面中的控件(而不仅仅是新页面)都会更改以反映新创建的会话。在任何选项卡中发送或接收的消息都会发送给最近创建会话的用户。

我正在寻找一种方法来打开多个标签,并让每个标签都针对不同的用户。

我环顾四周,并没有找到解决方案。我很难过。

1 个答案:

答案 0 :(得分: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);
}