0

为那些说要使用标签控件的人编辑

我很想使用标签控件;但我不知道如何从主窗体链接选项卡控件。我会假设我必须做这样的事情:

  1. 创建带有空白 TabControl 的表单,没有创建页面。
  2. 创建一个 CustomuserControl(添加 -> 用户控件),上面有我的控件。
  3. 当有新的聊天进来时,创建一个选项卡控件项,选项卡控件页面,将自定义控件添加到选项卡控件页面。将选项卡控件句柄添加到哈希表中,以便当有新消息进来时,可以在适当的控件中引用它们。

但是,我不知道该怎么做。例如,我知道我可以在用户控件内创建自定义事件,例如,如果每个控件都有一个“粗体”按钮,我可以让每个拥有该控件的页面实际使用该按钮。

然而,我还需要注册消息回调,以便我可以使用 MessageGrabber 向它发送数据,并且这不是在 UserControl 内部分配的,而是在新窗口进入时以编程方式分配的;但由于我没有可供参考的控件,因此我无法分配。


亲吻理念

像我现在这样创建表单,然后将该表单停靠在窗口或其他东西中,这不是更容易吗?所以,本质上,它仍然在创建表单,但它也是一个单独的窗口?


原始问题

好的,所以我被难住了(当涉及到复杂的 C# 逻辑时,这并不奇怪,哈哈)!我想要做的是以下几点:

目标:为新的聊天应用程序设置标签式聊天。

已完成:每当收到聊天消息或用户从花名册请求新聊天时,都会打开新窗口。这是完美的工作,并且仅在用户尚未打开聊天时打开一个窗口。那里很好很开心。

问题:我不想要窗户。好吧,我确实想要一个窗口,但是,我不想要大量单独的窗口。例如,我们的客户服务团队可能同时有大约 10 个活动的 IM 窗口,我不希望他们必须有 10 个窗口平铺在那里哈哈。我宁愿他们有一个私人 IM 窗口,并且所有 10 个选项卡都停靠在窗口内。

逻辑:这是我的逻辑,可能有缺陷,我深表歉意:

  • OnMessage:如果不存在,则打开新的聊天窗口;如果存在,请将其作为当前聊天窗口中的选项卡打开。
  • 发送消息:^^ 同上 ^^

代码示例

if (!Util.ChatForms.ContainsKey(msg.From.Bare))
            {
                RosterNode rn = rosterControl1.GetRosterItem(msg.From);
                string nick = msg.From.Bare;
                if (rn != null)
                    nick = rn.Text;
                frmChat f = new frmChat(msg.From, xmpp, nick);
                f.Show();
                f.IncomingMessage(msg);
                return;
            }

上面的注释:Util。函数只是跟踪在哈希表中打开了哪些窗口,这样,当消息进入时,它们会路由到正确的窗口。这是添加的:

Util.ChatForms.Add(m_Jid.Bare.ToLower(), this);

frmChat() 形式的命令。

使用中的库:agsxmpp 来自: http ://www.ag-software.de/agsxmpp-sdk/download/

问题:如何将此代码转换为在选项卡内打开,而不是在窗口中打开?有人可以给我一些想法,并提供帮助。我似乎无法理解这个概念。

4

1 回答 1

0

使用选项卡控件

于 2011-04-23T14:50:31.997 回答