如何在继承的TextBox中保留Font?

Inn*_*nno 3 .net c# user-controls winforms

我正在使用以下代码来获取未绘制边框的TextBox:

public partial class CustomTextBox : TextBox
{
    public CustomTextBox()
    {
        InitializeComponent();
        SetStyle(ControlStyles.UserPaint, true);
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        int borderWidth = 1;

        ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle,
            Color.Transparent, borderWidth, ButtonBorderStyle.Solid,
            Color.Transparent, borderWidth, ButtonBorderStyle.Solid,
            Color.Transparent, borderWidth, ButtonBorderStyle.Solid,
            Color.Transparent, borderWidth, ButtonBorderStyle.Solid);
    }
}
Run Code Online (Sandbox Code Playgroud)

我似乎错过了OnPaint()内部的某些内容,因为我的Font不再是textBox的默认Font(也许我必须重写另一个事件)。

当检查CustomTextBox.Font属性时,它会向我显示默认的“ Microsoft SansSerif in 8,25”,但在我的textBox中键入文本时,字体肯定显得更大且加粗。

希望你能帮我!

问候,

no

[编辑]

我应该提到,如果不覆盖OnPaint,则CustomTextBox的字体是正确的。仅当覆盖OnPaint我的字体不正确时(键入文本时,字体较大且看起来为粗体)。因此,我认为我必须做一些事情才能在OnPaint内部正确初始化字体(但是ATM我不知道该怎么做)。

Ved*_*ran 5

如果尚未创建文本框的句柄,则不要调用SetStyle,并且永远不会更改为“大胆”字体:

if (IsHandleCreated)
{
     SetStyle(ControlStyles.UserPaint, true);
}
Run Code Online (Sandbox Code Playgroud)