2014-06-06 1 views
1

я в настоящее время с помощью .text из TrayNotifyIcon для отображения StatusDisplay, когда пользователь мыши над ним (для percentual завершения процесса)Обновление .text из TrayNotifyIcon

Таким образом я просто набор : TrayNotifyIcon.Text к соответствующему% завершения. Пример (следующий код является частью кода, который я использую, когда я создаю новый поток, который устанавливает в переменную подпроцессора, если он завершен или нет, а также количество% завершения. Код ниже должен отображаться как TrayNotifyIcon.Text как многие% подпроцесса комплектуют обновляется каждый второй):

while (subprocess.NotCompleted) 
{  
    TrayNotifyIcon.Text = "TextToUpdateTo....." + subprocess.percent.ToString() + "% completion"; 
    Thread.Sleep(1000); 
} 

Теперь я видел, что это только обновляет экран всякий раз, когда я двигаю мышь и не обновляет его, как только я установил .text надлежащим образом.

Таким образом, мой quesiton - это способ сделать это так, чтобы я мог сообщить системе об обновлении текста, который отображается?

+1

Может помочь, если вы указали какой-то код – 3dd

+0

«Проблема» в том, что это не так много кода TrayNotifyIcon.Text = «TextToUpdateTo»; добавит это, хотя, как я уже сказал, установить или обновить отображаемый текст не очень много кода, который будет использоваться. – Thomas

+0

Подсказки не имеют функции «динамического обновления», что очень противоречит тому, что они были предназначены для работы. Вы можете динамически обновлять текст воздушного шара. Это не большой пользовательский интерфейс, изменение значка для имитации индикатора выполнения является разумным. –

ответ

2

Система отображает текст подсказки при наведении курсора мыши на значок уведомления. Ожидается, что этот текст не будет динамичным. Отображение текста обрабатывается системой. Когда он хочет отобразить подсказку, он запрашивает значок для текста, а затем отображает его. Он не вернется и проверяет, был ли текст изменен, и нет механизма информирования системы о том, что текст был изменен и должен быть обновлен. Это особенность оболочки (Shell_NotifyIcon), а не что-либо в библиотеках .net.

Итак, используя TrayNotifyIcon в своей форме ванили, вы ничего не можете поделать, чтобы изменить это поведение. Если вам действительно нужно динамическое обновление текста подсказки, вам придется подавить намеченный снимок системы (установив Text в пустую строку) и создав собственное окно подсказки. Вам нужно будет обнаружить, что мышка нависает над значком, а также обнаруживает, когда он покидает значок.

Честно говоря, я не думаю, что это действительно очень хороший образец UX. Если бы я был вами, я бы нашел другой способ позволить пользователю получить эту обратную связь.

+0

Клиент, которого я создаю, для информации о том, что нужен небольшой процесс, подсказывает, что это такое, например, dropbox, например dropbox (хотя я думаю, что они также не обновляют его только тогда, когда мышь перемещается, он обновляется). Иначе я бы не получил идею сделать динамическое обновление там. Tnx для объяснения там (боялся, что это уже невозможно, но не был уверен). – Thomas

+0

Другое приложение, которое ведет себя так, это Process Monitor. Динамическая информация, но снова намек, должна быть закрыта и повторно открыта для обновления. –

+0

Интересно. Тпй. – Thomas

Смежные вопросы