编辑那些说要使用标签控件的人
我很想使用标签控件;但我不知道如何从主窗体链接选项卡控件。我认为我必须做这样的事情:
但是,我不知道该怎么做。例如,我知道我可以在用户控件内部创建自定义事件,因此,例如,如果每个控件都有一个“粗体”按钮,我可以在每个页面上有该控件,实际使用该按钮。
然而,我还需要注册消息回调,以便我可以使用MessageGrabber向其发送数据,而不是在UserControl内部分配,这是在新窗口进入时以编程方式分配的;但由于我没有控制参考,我无法分配。
KISS哲学
创建表单会不会像现在这样容易,然后只是将窗体停靠在窗口或其他东西中?所以,从本质上讲,它仍然在创建表单,但它也是一个单独的窗口?
原始问题
好吧,所以我很难过(当谈到复杂的C#逻辑lol时,这并不是什么大惊喜)!我想要做的是以下几点:
目标:设置标签聊天新聊天应用程序。
已完成:每当收到聊天消息或用户请求名册中的新聊天时,请打开新窗口。这工作正常,并且当用户尚未打开聊天时仅打开一个窗口。那里很开心,很开心。
问题:我不想要Windows。好吧,我确实想要一个窗口,但是,我不想要大量的单独窗户。例如,我们的客户服务团队可能一次有大约10个活动的IM窗口,我不希望他们必须有10个窗口平铺在那里大声笑。我宁愿他们有一个私人IM窗口,所有10个标签停靠在窗口内。
逻辑:这是我的逻辑,可能有缺陷,我道歉:
代码示例:
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/
问题: 如何将此代码转换为在标签内部而不是窗口中打开?有人可以给我一些想法,并提供帮助。我似乎无法绕过这个概念。