CSMemo30

プログレスバーは縦に表示できないのかなぁ

トラックバー(スライダー)だと、OrientationプロパティをVerticalにすればいいんだけど、
プログレスバーにも似たようなプロパティがあると思ったらないんだよね。

調べたところ、ProgressBarにはCreateParamsプロパティなるものが隠されているそうで。
で、ProgressBarクラスを継承して新しいクラスを作って、そいつの中でこのプロパティに
「縦に表示する」値を入れ込めばできるとのこと。

■CreateParams
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1338043878

■How do I make a winforms progress bar move vertically in C#? - Stack Overflow
http://stackoverflow.com/questions/597411/how-do-i-make-a-winforms-progress-bar-move-vertically-in-c

やってみたよ。

using System;
using System.Windows.Forms;

namespace WhatsThis
{
    class VerticalProgressBar : ProgressBar
    {
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.Style |= 0x04;
                return cp;
            }
        }
    }
}

やっぱり横に表示されちゃうよ( pq)シクシク
訂正:よく見たら、配置するときに横長になるだけであってゲージは縦に増えていくようになっていました~sorry^^;

で、2つ目に上げたURLのページを見たら、こんなことが書いてあった。

Please don't use a progress bar for this; a vertical trackbar is the most appropriate control. 
Progress bars are designed for visual output, and abusing controls in this manner leads to 
awkward user interfaces. ? Rob Feb 28 '09 at 3:40

そっかー、トラックバーを使えばいいのか~。
って結局それかい!

ってことはなにかい、ユーザさんが「どうしてもプログレスバーのデザインがいいんだ。」とか
言い出したら、カスタムコントロールでやるしかないってこと!?

最終更新:2012年04月13日 13:51