2015-03-18 1 views
-1

Я разрабатываю приложение мгновенных сообщений с использованием C# Winforms. Это приложение использует службу WCF для отправки и получения сообщений и файлов по клиентам. это приложение позволяет мне общаться публично, в частном порядке и в группе с доступными пользователями.Как я могу сделать свое новое окно беззвучным, когда я уже набираю в окне чата

Моя проблема в том, что я печатаю любое сообщение в любом окне чата; и если я получаю сообщение в другом окне. Сдвиг фокуса в новое окно, и все, что я набираю, будет набирать новое окно, где я получил сообщение.

Как я могу сделать свое новое окно незаметным, когда я уже набираю в окне чата?

+0

Пожалуйста, разместите код для отображения окна. –

+0

Я получил решение моей проблемы: – Disha5

ответ

0

Я использую три разностных winforms для частного, публичного и группового чата. У меня есть список пользователей, которые делают частный чат и список групп, чтобы сделать групповой чат, также у меня есть возможность публичного чата со всеми онлайн-пользователями. для частного и группового чата он создает несколько экземпляров соответствующих форм.

также, когда я получаю сообщение, он проверяет, запущен ли экземпляр для отдельного окна private/group/public chat, если он запущен, будет использовать существующий экземпляр для отображения сообщений, иначе он создаст новый экземпляр для соответствующего окна чата ,

Я получил решение моей проблемы:

Я нахожу 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); 
           } 
          } 
         } 
Смежные вопросы