如何在TextBox上绘制

ja7*_*a72 1 c# textbox winforms

我有一个带文本框的winform,我想在它上面绘制一些GDI图形。文本框没有Paint()要挂钩的事件,因此我认为所有事件都必须在窗体的Paint事件中发生。作为测试,我使用以下命令从原点到文本框内的位置绘制一个矩形:

    private void FindForm_Paint(object sender, PaintEventArgs e)
    {
        using (Pen pen = new Pen(Color.Blue))
        {
            e.Graphics.DrawRectangle(pen, 0, 0, point.X, point.Y);
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是,当我运行时,先完成绘制,然后在我的线条上方呈现文本框。我想在渲染文本框后绘制线条。

PS。我尚未对该Form.SetStyle()功能的表单进行任何设置。

Cod*_*ray 5

所有者绘制TextBox控件可能比较棘手,因为它只是本机Win32 TextBox控件的包装。

捕获WM_PAINT自定义绘画例程工作所需的消息的最简单方法是从NativeWindow继承。

这是一篇出色的分步文章,它显示了如何在显示红色波浪下划线的情况下执行此操作:所有者绘制Windows.Forms TextBox (原始链接已失效;已替换为存档版本)