как над ProgressBar написать текст
От: myltik  
Дата: 21.12.05 06:35
Оценка:
Посоветуйте, пожалуйста, как сделать UserControl — ProgressBar поверх которго будет написан текст?
Re: как над ProgressBar написать текст
От: IDecember Россия  
Дата: 21.12.05 07:56
Оценка:
Здравствуйте, myltik, Вы писали:

M>Посоветуйте, пожалуйста, как сделать UserControl — ProgressBar поверх которго будет написан текст?


Label + ProgressBar?
Re[2]: как над ProgressBar написать текст
От: myltik  
Дата: 21.12.05 08:00
Оценка:
Здравствуйте, IDecember, Вы писали:

ID>Здравствуйте, myltik, Вы писали:


M>>Посоветуйте, пожалуйста, как сделать UserControl — ProgressBar поверх которго будет написан текст?


ID>Label + ProgressBar?


не катит — если делаем Label с прозрачным фоном, то он всё равно закрывает своим серым фоном progressBar
Re: как над ProgressBar написать текст
От: foreach  
Дата: 21.12.05 08:05
Оценка:
Здравствуйте, myltik, Вы писали:

M>Посоветуйте, пожалуйста, как сделать UserControl — ProgressBar поверх которго будет написан текст?


а вот так?: здесь
Re: как над ProgressBar написать текст
От: Аноним  
Дата: 21.12.05 09:53
Оценка:
Здравствуйте, myltik, Вы писали:

M>Посоветуйте, пожалуйста, как сделать UserControl — ProgressBar поверх которго будет написан текст?

Ээ... унаследоваться от прогрессбара и в OnPaint писать на нём текст e.Graphics.DrawString(s);
Re[2]: как над ProgressBar написать текст
От: myltik  
Дата: 21.12.05 10:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, myltik, Вы писали:


M>>Посоветуйте, пожалуйста, как сделать UserControl — ProgressBar поверх которго будет написан текст?

А>Ээ... унаследоваться от прогрессбара и в OnPaint писать на нём текст e.Graphics.DrawString(s);

Хех, а как от него унаследоваться, если он sealed?
Была идея создать UserComponent, на котором разместить ProgressBar, а в OnPaint этого компонета рисовать строку, но оказалось, что эта строка будет под ProgressBar
Re[2]: как над ProgressBar написать текст
От: myltik  
Дата: 21.12.05 10:23
Оценка:
Здравствуйте, foreach, Вы писали:

F>Здравствуйте, myltik, Вы писали:


M>>Посоветуйте, пожалуйста, как сделать UserControl — ProgressBar поверх которго будет написан текст?


F>а вот так?: здесь


да так делать — без проблем, но мне бы хотелось узнать как можно сделать самому UserControl обладающий простейшей функциональностью
Re[2]: как над ProgressBar написать текст
От: Аноним  
Дата: 21.12.05 19:44
Оценка:
>>в OnPaint этого компонета рисовать строку, но оказалось, что эта строка будет под ProgressBar

Что тебе мешает рисовать в обработчике события Paint этого ProgressBar?

Offline сборники часто задаваемых вопросов [от 15 ноября]:
[[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236958.aspx]Всe[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236957.aspx]Windows Forms[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236955.aspx]Common[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236954.aspx]ASP.NET[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236953.aspx]ADO.NET[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236952.aspx]UG[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236951.aspx]WSS[/url]]
2 min @ 28.8 kbps


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: как над ProgressBar написать текст
От: Аноним  
Дата: 21.12.05 19:46
Оценка:
>>но мне бы хотелось узнать как можно сделать самому UserControl обладающий простейшей функциональностью

ProgressBar с простейшей функциональностью пишется за 10 минут при учете наследования от UserControl. Делаешь свойство Value, в OnPaint считываешь и заливаешь SolidBrush или LinearGradientBrush.

Offline сборники часто задаваемых вопросов [от 15 ноября]:
[[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236958.aspx]Всe[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236957.aspx]Windows Forms[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236955.aspx]Common[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236954.aspx]ASP.NET[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236953.aspx]ADO.NET[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236952.aspx]UG[/url]] [[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236951.aspx]WSS[/url]]
2 min @ 28.8 kbps


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: как над ProgressBar написать текст
От: annaS  
Дата: 21.12.05 20:59
Оценка:
Здравствуйте, myltik, Вы писали:

M>Посоветуйте, пожалуйста, как сделать UserControl — ProgressBar поверх которго будет написан текст?


progressBar1.Value += 5;        
progressBar1.Text = "Text " + progressBar1.Value.ToString();    
Graphics g = progressBar1.CreateGraphics ();
g.DrawString (progressBar1.Text, Font, Brushes.Red, progressBar1.ClientRectangle);

Также придётся делать прорисовку при изменении Maximum, Minimum свойств прогресс бара, при рефреше (в форме или контроле контейнере прогресс бара).
protected override void WndProc(ref Message m)
{
    base.WndProc (ref m);            
    if (m.Msg == 0xf)//WM_PAINT
    {
        Graphics g = progressBar1.CreateGraphics ();
        g.DrawString (((Control)progressBar1).Text, Font, Brushes.Red, progressBar1.ClientRectangle);
    }
}
Re[2]: как над ProgressBar написать текст
От: Аноним  
Дата: 22.12.05 08:28
Оценка:
добавляем:
this.progressBar1.Paint += new System.Windows.Forms.PaintEventHandler(this.AddString);

И нужную функцию:
private void AddString(object sender, PaintEventArgs e)
{
MessageBox.Show("heh!");
}


Странно, но как я ни гонял форму — MessageBox так и не выскочил





данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: как над ProgressBar написать текст
От: Аноним  
Дата: 22.12.05 08:30
Оценка:
Здравствуйте, annaS, Вы писали:

S>Здравствуйте, myltik, Вы писали:


M>>Посоветуйте, пожалуйста, как сделать UserControl — ProgressBar поверх которго будет написан текст?


S>
S>progressBar1.Value += 5;        
S>progressBar1.Text = "Text " + progressBar1.Value.ToString();    
S>Graphics g = progressBar1.CreateGraphics ();
S>g.DrawString (progressBar1.Text, Font, Brushes.Red, progressBar1.ClientRectangle);
S>

S>Также придётся делать прорисовку при изменении Maximum, Minimum свойств прогресс бара, при рефреше (в форме или контроле контейнере прогресс бара).
S>
S>protected override void WndProc(ref Message m)
S>{
S>    base.WndProc (ref m);            
S>    if (m.Msg == 0xf)//WM_PAINT
S>    {
S>        Graphics g = progressBar1.CreateGraphics ();
S>        g.DrawString (((Control)progressBar1).Text, Font, Brushes.Red, progressBar1.ClientRectangle);
S>    }
S>}
S>


и у тебя это работает нормально, это же по сути тоже самое, что перерыть метод OnPaint или я ошибаюсь? у меня надпись пропадает в некоторых случаях
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.