Top / .NET備忘録 / 04.最難関!ComboBox / 11.Aero での DropDown

ずーーーーーっと XP を使っていたので気づかなかったのですが、Aero の DropDownList はボタンのような感じになるのですね。

Windows 8 の画面

Aero1.gif

しょうがないので、オーナードローします。

OnDropDownStyleChanged をオーバーライドし、DrawMode を切り替えます。

        protected override void OnDropDownStyleChanged(EventArgs e)
        {
            base.OnDropDownStyleChanged(e);
            if (this.DropDownStyle == ComboBoxStyle.DropDownList)
                base.DrawMode = DrawMode.OwnerDrawFixed;
            else
                base.DrawMode = DrawMode.Normal;
        }

OnDrawItem をオーバーライドし、描画して完成です。

        protected override void OnDrawItem(System.Windows.Forms.DrawItemEventArgs e)
        {
            e.DrawBackground();
            string txt = null;
            if (e.Index >= 0)
                txt = base.Items[e.Index].ToString();
            else
                txt = base.Text;
            TextRenderer.DrawText(e.Graphics, txt, base.Font, e.Bounds.Location, e.ForeColor, e.BackColor);
            e.DrawFocusRectangle();
        }
Aero2.gif

上は ComboBox の DropDownList、下は VBComboBox の DropDownList です。

Windows 7 でも確認しておきます。

Win7.gif



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2013-04-10 (水) 00:30:00 (1589d)