在TextBox C#中绘制线条(.NET 3.5)

时间:2010-02-16 12:25:49

标签: c# winforms .net-3.5 textbox

我需要一个带有底线的文本框,例如表格中使用的输入字段。

我曾在底部寻找过类似边框的功能,或类似的东西。 但我认为唯一的方法是在文本框中绘制一行。

以下代码不起作用:

private void textEdit1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
        if (sender is TextBox)
        {
            TextBox tmp = (TextBox)sender;
            Graphics g = CreateGraphics();
            Pen p = new Pen(System.Drawing.Color.Red, 8);
            g.DrawLine(p, tmp.Location.X, tmp.Location.Y, (tmp.Location.X + tmp.Width), tmp.Location.Y);
            p.Dispose();
            g.Dispose();
        }
    }

希望有人可以帮忙!谢谢!

3 个答案:

答案 0 :(得分:3)

请查看描述自定义过程的Owner-drawing a Windows.Forms TextBox文章。

答案 1 :(得分:0)

如何使用RichtextBox控件并为文本加下划线?

答案 2 :(得分:0)

我想这是因为TextBox确实是由操作系统本身绘制的。您必须子类化TextBox并处理WM_PAINT消息(可能还有边界的WM_NC_PAINT)。

修改
sash的答案提供了一个链接,告诉你如何做我在这里说的话。

编辑2
对于您的示例案例,将Border设置为none并将TextBox添加到面板是否足够?然后,您可以将面板绘制为具有底线,只要TextBox未填充面板,它也将是可见的。但是,这仅适用于单行TextBoxes