【问题标题】:How can I make my new window appear silently when I am already typing in some chat window当我已经在某个聊天窗口中输入时,如何让我的新窗口静默出现
【发布时间】:2015-03-18 04:46:51
【问题描述】:

我正在使用 C# Winforms 开发即时消息应用程序。此应用程序使用 WCF 服务在客户端之间发送和接收消息和文件。此应用程序允许我与可用用户公开、私下和在群组中聊天。

我的问题是如果我在任何聊天窗口中输入任何消息;如果我在另一个窗口中收到消息。焦点转移到新窗口,无论我输入什么,它都会在我收到消息的地方输入 inn new window。

当我已经在某个聊天窗口中输入时,如何让我的新窗口静默显示?

【问题讨论】:

  • 请贴出如何显示窗口的代码。
  • 我的问题得到了解决:

标签: c# winforms wcf


【解决方案1】:

我正在使用三种不同的 winform 进行私人、公共和群聊。我有一个可以进行私人聊天的用户列表和一个可以进行群聊的群组列表,我还可以选择与所有在线用户进行公共聊天。对于私人和群聊,它会创建各自表单的多个实例。

当我收到消息时,它会检查特定私人/群组/公共聊天窗口的实例是否正在运行,如果它正在运行,它将使用现有实例来显示消息,否则它将为相应的聊天窗口创建新实例。

我已经解决了我的问题:

我正在寻找 ActiveControl 和 ActiveForm 然后我使用下面的代码来设置我的活动窗口

如果 (_ActiveControl != null) {

                            if (_ActiveControl is Form)
                            {
                                if ((_ActiveControl is {form name for public chat window}) || (_ActiveControl is {form name for private chat window}) || (_ActiveControl is {form name for Group chat window}))
                                {
                                    _ActiveForm = (Form)_ActiveControl;
                                    _ActiveForm.Activate();
                                    _ActiveForm.Focus();
                                    TextBox _tb = (TextBox)_ActiveForm.Controls.Find("txtMessage", true).FirstOrDefault();
                                    _tb.Select(_tb.Text.Length, 0);
                                }
                            }
                        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-12
    • 2015-06-27
    • 1970-01-01
    • 2021-12-30
    • 2017-11-25
    • 1970-01-01
    • 2021-06-06
    • 2010-10-07
    相关资源
    最近更新 更多