Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ProgressBar, На форуме не нашел 
V
    Опции темы
sig84
Дата 30.3.2007, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.2.2007

Репутация: нет
Всего: нет



Как сделать, чтобы ProgressBar показывал %
PM MAIL   Вверх
mr.DUDA
Дата 30.3.2007, 19:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Рисовать руками.


--------------------
user posted image
PM MAIL WWW   Вверх
sig84
Дата 30.3.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.2.2007

Репутация: нет
Всего: нет



А по-другому никак?
Пробовал руками - поместил на progressBar label и.т.д.
Беда в чем - когда ставишь цвет фона label - прозрачный, почему-то при бегущей полосе все равно получается белый прямоугольник
Почему  smile ?
PM MAIL   Вверх
mr.DUDA
Дата 31.3.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Белый прямоугольник потому что label фактически добавляется не на прогрессбар а на форму.

Хехе, оказывается некоторые контролы рисует ОСь и для них не генерируется событие Paint... С другой стороны, выставление стиля UserPaint разрешит генерацию события, но выключит дефолтную отрисовку.

Вот рабочий код прогрессбара с отрисовкой процентов поверх него:

Код
using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsApplication4
{
    public class MyProgressBar : ProgressBar
    {
        const int WM_PAINT = 15;

        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);

            if (m.Msg == WM_PAINT)
            {
                using (Graphics gr = this.CreateGraphics())
                {
                    Font font = SystemFonts.MenuFont;
                    Brush brush = Brushes.Black;

                    string str = this.Value.ToString() + "%";

                    SizeF size = gr.MeasureString(str, font);
                    RectangleF rect = this.ClientRectangle;
                    rect.X = (rect.Width - size.Width) / 2;
                    rect.Y = (rect.Height - size.Height) / 2;
                    rect.Size = size;

                    gr.DrawString(str, font, brush, rect);
                }
                
            }
        }
    }
}


Добавляем этот класс в проект (неймспейс и имя класса можно поменять как угодно), компилируем и тянем появившийся новый компонент с тулбокса на форму.


--------------------
user posted image
PM MAIL WWW   Вверх
sig84
Дата 3.4.2007, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.2.2007

Репутация: нет
Всего: нет



Спасибо, mr.DUDA, очередной раз показал свой высокий класс!!!
Молодца  smile 
PM MAIL   Вверх
mr.DUDA
Дата 3.4.2007, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



стараемсо...  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.