首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停靠Windows窗体(选项卡聊天界面)

停靠Windows窗体(选项卡聊天界面)
EN

Stack Overflow用户
提问于 2011-04-23 14:44:43
回答 1查看 1.1K关注 0票数 0

编辑那些说要使用选项卡控件的人

我很想使用选项卡控件;但是我不知道如何将选项卡控件从主窗体上链接起来。我会假设我必须这样做:

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

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

但是,我还需要注册消息回调,这样我就可以使用MessageGrabber向其发送数据,而当新窗口出现时,UserControl中没有分配数据,这是通过编程分配的;但是由于我没有可引用的控件,所以无法分配。

KISS哲学

就像我现在做的那样,仅仅创建表单,然后将该表单停靠在窗口或其他地方,难道不是更容易吗?所以,从本质上说,它仍然在创建表单,但它也是一个单独的窗口?

原始问题

好吧,所以我很困惑(当涉及到复杂的C#逻辑lol时,这并不是一个大惊喜)!我想做的是:

目标:为新的聊天应用程序设置选项卡聊天。

Completed:每当收到聊天消息或用户从名册中请求新聊天时,打开新窗口。这是完美的工作,只打开一个窗口,当用户还没有打开聊天。那里又好又开心。

Problem:我不想要窗户。嗯,我确实想要一扇窗户,但是,我不想要成堆的单独窗户。例如,我们的客户服务团队可能有大约10个活动的IM窗口一次运行,我不希望他们有10个窗口瓷砖那里lol。我宁愿他们有一个私人IM窗口,所有10个选项卡都停靠在窗口内。

逻辑:这是我的逻辑,可能有缺陷,我很抱歉:

  • OnMessage:如果不存在,打开新的聊天窗口;如果存在,则在当前聊天窗口中作为选项卡打开它。
  • SendMessage:^^同上^^

代码示例

代码语言:javascript
复制
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的注记。函数只跟踪哈希表中打开的窗口,这样,当消息传入时,它们会路由到适当的窗口。添加了以下内容:

代码语言:javascript
复制
Util.ChatForms.Add(m_Jid.Bare.ToLower(), this);

命令在frmChat()表单中。

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

Problem:如何将这些代码转换为打开选项卡内部的代码,而不是打开窗口?有人能给我一些想法吗,帮我一下。我只是不能把我的头绕在这个概念上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-23 14:50:31

使用TabControl

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5764826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档