none
WindowsForm内のスタイルの標準化について RRS feed

  • 質問

  • こんにちわ。

     

    現在プロジェクトにて色とフォントの標準化を行おうとしております。

    解決法として、

    1.各コンポーネントを継承したMyTextBoxなどを作成し

      そこで標準の色とフォントをコンストラクタで指定

    2.プログラマの方にはMyTextBoxを画面に貼り付けるよう依頼

     

    という手順で実装を始めました。

     

    そこで問題が出ているのですが、

    MyTextBoxをForm上にドラックした際に自動生成されるソースに

    コンストラクタで設定したバックカラーの色が記載されてしまいます。

    MyTextBox2.BackColor = System.Drawing.Color.Black;

     

    この状態で、親クラスのMyTextBoxのバックカラーを変更しても

    子画面で再設定されたことになり、親の変更が反映されません。

     

    子画面でドラックした際に親のプロパティのソースが自動生成

    されないようにする方法をご存知の方、ご教授ください。

     

    他の方法で解決している方がいれば、

    その方法を教えていただけないでしょうか?

     

    よろしくお願いいたします。

    2007年10月30日 1:48

回答

  • "ドラッグ時の色" というのは何でしょうか?
    初期の色のことであれば、DefaultValue 属性はコンストラクタで指定している初期値とは別物なので無関係です。


    コンストラクタで指定している色と同じ色を DefaultValue 属性に指定しておくことにより、
    自動生成によるソースの記述はなくなるというだけのことです。

    コンストラクタで指定するのは 「初期値」 で、DefaultValue 属性で指定するのは 「既定値」 です。

    2007年10月30日 9:29

すべての返信

  • 放浪河童さん、こんにちは。

     

     放浪河童 さんからの引用

    そこで問題が出ているのですが、

    MyTextBoxをForm上にドラックした際に自動生成されるソースに

    コンストラクタで設定したバックカラーの色が記載されてしまいます。

    MyTextBox2.BackColor = System.Drawing.Color.Black;

     

    この状態で、親クラスのMyTextBoxのバックカラーを変更しても

    子画面で再設定されたことになり、親の変更が反映されません。

     

    子画面でドラックした際に親のプロパティのソースが自動生成

    されないようにする方法をご存知の方、ご教授ください。


    BackColor の DefaultValue 属性を変えるでおkでしょうか。

    ただ、Black がデフォルトというのはヘンなので私が読み違えているかもしれません。

    もしそうでしたらごめんなさい。

    2007年10月30日 6:05
  • 回答ありがとうございました。

     

    そのような属性があるんですね!

    まだまだ勉強不足でした。

     

    以下のようにコーディングしてみましたが、

    ドラッグ時の色に変化がありませんでした。

     

    コーディング間違ってますか?

    コード ブロック

            [DefaultValue(typeof(Color),"Pink")]
            public override System.Drawing.Color BackColor
            {
                get
                {
                    return base.BackColor;
                }
                set
                {
                    base.BackColor = value;
                }
            }

     

     

    2007年10月30日 7:53
  • "ドラッグ時の色" というのは何でしょうか?
    初期の色のことであれば、DefaultValue 属性はコンストラクタで指定している初期値とは別物なので無関係です。


    コンストラクタで指定している色と同じ色を DefaultValue 属性に指定しておくことにより、
    自動生成によるソースの記述はなくなるというだけのことです。

    コンストラクタで指定するのは 「初期値」 で、DefaultValue 属性で指定するのは 「既定値」 です。

    2007年10月30日 9:29
  • >じゃんぬねっとさん

    Formにドラッグした時に色が変わらないことを伝えたかったのですが。。。

     

    ご教授いただいた方法でソースの自動生成を防止することができました。

    属性についてはもっと勉強します。

     

    ありがとうございました。

    2007年10月30日 10:42
  •  放浪河童 さんからの引用
    Formにドラッグした時に色が変わらないことを伝えたかったのですが。。。

    ドラッグでなくても配置はできますし、"どんな時にどこへ" という情報が抜けておりますと、

    閲覧者はいろいろな可能性を捨てきれず、ここに誤解が生じる恐れがあります。

    2007年10月30日 22:25