Здравствуйте,
пишу программу на с# с VS2003.
В процессе работы программа должна в теле одной функции несколько раз изменить цвет одного и того же TextBox (ReadOnly = false).
некая функция несколько раз вызывает функцию DiodenUpdate():
private void DiodenUpdate(string str)
{
for(int i=0; i<14; i++)
{
if (flag==0)
LeuchtAnz(wert,i);
}
}
private void LeuchtAnz(bool Wert, int countT)
{
switch (countT)
{
case 0:
textBox1.Text = System.Convert.ToString(Wert);
ColorChange(textBox1,Wert);
break;
.........................................................
case 13:
textBox14.Text = System.Convert.ToString(Wert);
ColorChange(textBox14,Wert);
break;
}
}
private void ColorChange(System.Windows.Forms.TextBox Textbox, bool Wert)
{
if (Wert)
Textbox.BackColor = System.Drawing.Color.Lime;
else
Textbox.BackColor = System.Drawing.Color.Silver;
}
Но на самом цвет меняется один раз при завершении того метода, который вызвал DiodenUpdate().
Может есть возможность менять TextBox.BackColor на лету?
22.03.06 10:26: Перенесено модератором из '.NET' — TK
Ндя... Дже-Даи...
У как насчет мысли, что:
— тексбокс просто не успевает прорисовываться
— смена цветов происходит практически мгновенно
—
Real programmers don't comment their code. If it was hard to write, it should be hard to understand.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Здравствуйте, aquario, Вы писали:
A>Здравствуйте,
A>пишу программу на с# с VS2003.
A>В процессе работы программа должна в теле одной функции несколько раз изменить цвет одного и того же TextBox (ReadOnly = false).
A>некая функция несколько раз вызывает функцию DiodenUpdate():
A>A> private void ColorChange(System.Windows.Forms.TextBox Textbox, bool Wert)
A> {
A> if (Wert)
A> Textbox.BackColor = System.Drawing.Color.Lime;
A> else
A> Textbox.BackColor = System.Drawing.Color.Silver;
A> }
A>
A>Но на самом цвет меняется один раз при завершении того метода, который вызвал DiodenUpdate().
A>Может есть возможность менять TextBox.BackColor на лету?
Что-то я не совсем понял, что ты имел ввиду... Может это поможет?
private void ColorChange(System.Windows.Forms.TextBox Textbox, bool Wert)
{
if (Wert)
Textbox.BackColor = System.Drawing.Color.Lime;
else
Textbox.BackColor = System.Drawing.Color.Silver;
Application.DoEvents();
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Powerz, Вы писали:
P>Что-то я не совсем понял, что ты имел ввиду... Может это поможет?
P>P> private void ColorChange(System.Windows.Forms.TextBox Textbox, bool Wert)
P> {
P> if (Wert)
P> Textbox.BackColor = System.Drawing.Color.Lime;
P> else
P> Textbox.BackColor = System.Drawing.Color.Silver;
P> Application.DoEvents();
P> }
P>
Спасибо! То что нужно.
Здравствуйте, Sanych-sun, Вы писали:
SS>Доброго времени суток!
SS>А не слишком ли круто для такого вот действия юзать Application.DoEvents() может достаточно TextBox.Refresh?
Да, TextBox.Refresh достаточно. Еще можно использовать TextBox.Update();
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>