Какие дополнительные вызовы метода рекуритируются, чтобы отразить ToolStripMenuitem.text изменение на экране?C#

Место общения программистов C#
Anonymous
 Какие дополнительные вызовы метода рекуритируются, чтобы отразить ToolStripMenuitem.text изменение на экране?

Сообщение Anonymous »

Когда я вставляю или удаляю элементы меню в контекстное меню/из контекстного меню, связанного с объектом notifyicon , то меню, как видно из пользователя, немедленно изменяют, чтобы отразить новые или удаленные элементы. Но когда я меняю текст элемента меню, он меняется только в памяти, но не на экране. Я могу изменить его столько раз, сколько желаю, и видеть в отладчике, что текст меняется, но он остается старым текстом на экране. Он изменяется на других элементах управления, которым я его назначаю, только не в элементе контекстного меню в лотке. Затем меню показывает новый текст. Но если новый текст отличается только от старой в одной цифре где -то в IP -адресе, например, 192.168.1.1 , становится 192.168.1.2 , то меню продолжает показывать старый текст.
Вот код:

Код: Выделить всё

async void ClckEventHandler(object sender, EventArgs e)
{
// Here text is "host1 192.168.1.1:1234 login timeout"
var entity = await GetNewValues();
trayMenuItem.Text = entity.text; // Here text is "host1 192.168.1.2:1234 login timeout"
}
и entity.text -это свойство только для чтения, чье Getter вызывает toString () .
Я попытался изменить вышеуказанное на:

Код: Выделить всё

trayMenuItem.Text = "TEST";
Application.DoEvent();
trayMenuItem.Text = entity.text;
Application.DoEvent();
< /code>
Но меню все еще показывает старый текст. Только если я прокомментирую последние 2X строки, то в меню показано «тест». Я попытался добавить восклицательный знак в конце текста, но он все еще не изменил его на экране: < /p>
trayMenuItem.Text = entity.text + "!";
< /code>
также попытался < /p>
Invoke(new MethodInvoker(()=>trayMenuItem.Text = entity.text));
< /code>
Но меню все еще показало старый текст. Затем я клонировал новую строку в другую, используя string.copy () 
и все еще видел старый текст в меню.>

Подробнее здесь: https://stackoverflow.com/questions/794 ... m-text-cha

Вернуться в «C#»