|
コンストラクタを書いて、そこでプロパティに設定するコードを書きましょう。
ただ、それだけだと、一度デザイナで配置してしまったコントロールには、そのクラスのコードを変えるだけでは追従しなくなります。
(Designer.csにCursor = VSplitみたいなコードが出力されるため)
ですので、CursorプロパティにDefaultValue属性をつけたり、Cursorプロパティを変えないように隠したりするのも手かもしれません。
■デフォルト値を変更する
public class CursorPictureBox : PictureBox
{
// コンストラクタ
public CursorPictureBox()
{
// Cursorのデフォルト値を入れておく
Cursor = Cursors.VSplit;
}
// デフォルト値はVSplitであることを宣言しておく
[System.ComponentModel.DefaultValue(typeof(Cursor), "VSplit")]
// 属性をつけるためだけにoverrideであるため、あとはbaseに任せる
public override Cursor Cursor
{
get { return base.Cursor; }
set { base.Cursor = value; }
}
}
■Cursorプロパティを見えなくする
public class CursorPictureBox : PictureBox
{
// コンストラクタ
public CursorPictureBox()
{
// Cursorのデフォルト値を入れておく
Cursor = Cursors.VSplit;
}
// プロパティウィンドウで見えないようにする
[System.ComponentModel.Browsable(false)]
// Designer.cs等に出力されないようにする
[System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
// コードエディタのIntelliSenseで見えないようにする
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
// 属性をつけるためだけにoverrideであるため、あとはbaseに任せる
// 好みに合わせてsetアクセサで例外をスローするかどうか?
public override Cursor Cursor
{
get { return base.Cursor; }
set { base.Cursor = value; }
}
}
※見えなくするだけで、実際には変更できる。
|