いろいろな方法があると思いますが、ざくっとこんな感じでしょう。
public partial class TextBoxEx : System.Windows.Forms.TextBox
{
private System.Drawing.Color _borderColor = System.Drawing.Color.FromArgb(100, 100, 100);
public System.Drawing.Color BorderColor
{
get { return _borderColor; }
set { _borderColor = value; }
}
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x85) //WM_NCPAINT
{
System.Drawing.Graphics gfx = this.Parent.CreateGraphics();
Rectangle rct = new Rectangle(this.Location, this.Size);
rct.Inflate(1, 1);
System.Windows.Forms.ControlPaint.DrawBorder(gfx,
rct,
_borderColor,
System.Windows.Forms.ButtonBorderStyle.Solid);
}
base.WndProc(ref m);
}
}
#忘れてました。上のテキストボックスはボーダーを表示しないようにして下さい。(^^;
#別の方法としては、普通のテキストボックス(ボーダー無し)を配置しておいて、
フォームのOnPaintでテキストボックスの周りにボーダーを書いてもいいと思います。