はい、追加できます。列挙に建てContentAlignment
と呼ばれている:あなたは、このプロパティで行うことは、今あなた次第です
using System.ComponentModel;
using System.Windows.Forms;
public class newControl : Control {
private ContentAlignment _TextAlign = ContentAlignment.MiddleCenter;
[Description("The alignment of the text that will be displayed on the control.")]
[DefaultValue(typeof(ContentAlignment), "MiddleCenter")]
public ContentAlignment TextAlign {
get { return _TextAlign; }
set { _TextAlign = value; }
}
}
。
PropertyGrid
でコントロールがどのように使用されているかについていくつかの属性を追加しました。 DefaultValue
属性はではなく、プロパティの値をに設定します。プロパティが太字で表示されるかどうかを判断するだけです。
あなたTextAlign
プロパティを使用してテキストを表示するには、あなたがOnPaint
メソッドをオーバーライドして、それを描画する必要があります:
protected override void OnPaint(PaintEventArgs e) {
switch (_TextAlign) {
case ContentAlignment.MiddleCenter: {
TextRenderer.DrawText(e.Graphics, this.Text, this.Font, this.ClientRectangle, this.ForeColor, Color.Empty,
TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
break;
}
case ContentAlignment.MiddleLeft: {
TextRenderer.DrawText(e.Graphics, this.Text, this.Font, this.ClientRectangle, this.ForeColor, Color.Empty,
TextFormatFlags.Left | TextFormatFlags.VerticalCenter);
break;
}
// more case statements here for all alignments, etc.
}
base.OnPaint(e);
}
あなたやあなたがalso..otherwiseあなたが必要だろうといけないButtonBaseクラスのヘルプから継承しますあなたのnewControlのために独自のパブリックプロパティを作成する。 – VS1
問題は、私は使用できないプロパティなどがたくさんあることを望んでいないということです。私はButtonBaseクラスを見ていて、それは私には適していません。私のコントロールでは、(適切な視覚的な仕事で) 'TextAlign'プロパティが必要ですが、私はそこに境界線スタイル(例えば)は必要ありません...質問は可能です。あるいは、私が必要とするものがすでに含まれているものを見つける必要があります。ご回答ありがとうございます! – justAuser