次のコードを使用して、高さ調整可能で垂直方向に位置合わせ可能なテキストボックスを作成しています。これを行う必要がある理由は、winformテキストボックスの高さを調整可能にすることはできますが、テキストボックス内のテキストを垂直方向に揃えることができないためです。そこで、テキストOnPaintイベントを描画する必要があると判断しました。テキストボックスは現在正しい配置を示していますが、カーソルはテキストボックスの上にあります。この位置を制御する方法もありますか?
public class TextBoxHeightAdjustable : System.Windows.Forms.TextBox
{
public TextBoxHeightAdjustable()
{
this.AutoSize = false;
this.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
}
protected override void OnPaint(PaintEventArgs e)
{
// This never runs no matter what I try!
base.OnPaint(e);
// Create a StringFormat object with the each line of text, and the block
// of text centered on the page.
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), ClientRectangle, stringFormat);
}
}