полоса для индикации процента, но не индикатор выполнения

Мне нужна полоса, которая показывает процент чего-то, например, уровень заряда батареи или размер используемого пространства на жестком диске. Как введите описание изображения здесь

Это не индикатор выполнения. Когда я использую индикатор выполнения, каждый раз, когда я отправляю сообщение PBM_SETPOS, он будет увеличиваться с 0 до поз.

Полоса должна иметь возможность устанавливать значение вручную, и после нее цветовая область будет изменяться на указанную длину напрямую, а не в сторону увеличения.

Есть ли в WinAPI встроенная функция для этой цели?


person user565739    schedule 22.05.2012    source источник
comment
Вы можете использовать для этого индикатор выполнения, вам просто нужно обойти одно из улучшений, добавленных в Vista. А именно анимация, используемая при увеличении позиции. Прочтите мой ответ здесь, чтобы узнать, как: stackoverflow.com/questions/6128287/   -  person David Heffernan    schedule 23.05.2012
comment
Итак, Every time you set the progress bar counter to N immediately afterwards set it to N-1. это решение? Я попробую, но звук утомлен ..... Спасибо   -  person user565739    schedule 23.05.2012
comment
Верно. Это странно, но вот как это работает с этим контролем.   -  person David Heffernan    schedule 23.05.2012
comment
Еще раз спасибо, Дэвид. Оно работает!! Просто любопытно, что ты знаешь об этом очень утомительном методе? Это где-то задокументировано? Кстати, знаете ли вы, как получить синий цвет, как на картинке выше? Так как индикатор выполнения имеет только зеленый, желтый, красный цвет. Или полоса, показывающая используемое дисковое пространство, не является индикатором выполнения, поэтому она имеет больше цвета для использования? Я знаю, что есть способ отключить визуальный стиль, но, как показано на рисунке выше, он использует визуальный стиль, я думаю   -  person user565739    schedule 23.05.2012
comment
Я не думаю, что это где-то задокументировано. Я узнал об этом, пытаясь ответить на вопрос о переполнении стека. Я думаю, что нашел его на форуме после веб-поиска.   -  person David Heffernan    schedule 23.05.2012
comment
Возможный дубликат Как использовать индикатор выполнения в виде счетчика?   -  person jrh    schedule 03.08.2016


Ответы (1)


Используйте панель, а затем установите метку в ней ... Затем установите ширину метки с задним цветом в процентах ...

Кодируйте следующим образом:

string s27 = "select percentage from CandidateReg3 where candidateid='" + candidateid + "'";
DataTable d17 = cn.viewdatatable(s27);
if (d17.Rows.Count > 0) {
   for (int m = 0; m < d17.Rows.Count; m++) {
        percreg3 = int.Parse(d17.Rows[m]["percentage"].ToString());
        percregtotal = percreg3 + percreg;
   }
} else {
   percregtotal = percreg;
}

decimal percregtotals = (decimal)percregtotal / 100;
double percent = Convert.ToDouble(percregtotals);

// double percent = 1;
IndicatorLabel.Width = new Unit(percent * IndicatorPanel.Width.Value, UnitType.Pixel);

IndicatorLabel.ToolTip = percent.ToString("p0");
IndicatorLabel.Text = percent.ToString("p0"); 
IndicatorLabel.ForeColor=Color.White;

// IndicatorLabel.Text = "";
IndicatorLabel.BackColor = Color.Green;
person xyz    schedule 31.07.2012