Top / .NET備忘録 / 03.CommandButton / 01.背景色の継承を切る

TextBox で説明した方法が使えるかなーと

    public class VBCommandButton : Button
    {
        public VBCommandButton()
        {
            base.BackColor = SystemColors.Control;
        }
    }

のようにしてみたのですが、なぜか VisualStyle が適用されません。(~_~;)

CommandButton1.gif

気づくのにかなり時間がかかりましたが、BackColor プロパティを変更すると UseVisualStyleBackColor プロパティが連動して false に変更され、VisualStyle が適用されなくなるようです。
BackColor プロパティをオーバーライドして UseVisualStyleBackColor を true にします。

UseVisualStyleBackColor は隠しちゃいます。

    using System;
    using System.ComponentModel;
    using System.Drawing;
    using System.Windows.Forms;
 
    namespace VB6Control
    {
        public class VBCommandButton : Button
        {
            public VBCommandButton()
            {
                this.BackColor = SystemColors.Control;
            }
 
            [DefaultValue(typeof(Color), "Control")]  
            public override Color BackColor
            {
                get { return base.BackColor; }
                set
                {
                    base.BackColor = value;
                    base.UseVisualStyleBackColor = true;
                }
            }
 
            [Browsable(false)]
            [EditorBrowsable(EditorBrowsableState.Never)]
            [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
            [Obsolete("", true)]
            public new bool UseVisualStyleBackColor
            {
                get { return true; }
                set { base.UseVisualStyleBackColor = true; }
            }
        }
    }



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2013-03-05 (火) 13:52:39 (1694d)