Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > изменение статусбара


Автор: sobik 8.5.2008, 14:35
Привет всем. У меня такой вопрос - в статусстрипе есть лейбл:
 
Код

 private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripStatusLabel toolCurrentStatus;

текст лейбла сохраняеться в некоторой переменной и присваиваеться по событию(клику): 
Код

 this.toolCurrentStatus.Text = oMyThread.Message;

Как сделать так, что бы по изменению  oMyThread.Message текст лейбла тоже обновлялся?

Автор: mr.DUDA 8.5.2008, 15:35
Если нет никакого события по изменению Message, и вообще неизвестно что это за Message такой и кто его меняет, то в принципе можно повесить на таймер проверку изменился ли Message и если изменился - присваивать в toolCurrentStatus.Text; а вообще, лучше отдать это на откуп второму потоку (судя по имени oMyThread, речь идёт о многопоточном приложении), пусть он через Invoke меняет текст в строке статусбара.

Автор: sobik 8.5.2008, 16:01
mr.DUDA, да, Вы точно подметили, это много поточное приложение. Можно поподробнее, про второй способ. Какую роль там играет Invoke?

Автор: vponomarov 9.5.2008, 00:03
как вариант, можно создать свойство для изменения oMyThread.Message и использовать его вместо непосредственного присвоения
Код

pubic string Message
{
get
{ return oMyThread.Message;}
set
{
oMyThread.Message=value;
this.toolCurrentStatus.Text=value;
}
}

по-моему такое решение более изящное smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)