我需要一个带有底线的文本框,例如表格中使用的输入字段。
我曾在底部寻找过类似边框的功能,或类似的东西。 但我认为唯一的方法是在文本框中绘制一行。
以下代码不起作用:
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();
}
}
希望有人可以帮忙!谢谢!
答案 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
。