在c#winforms-Newbie中更改文本框的边框颜色

在c#winforms-Newbie中更改文本框的边框颜色,c#,winforms,C#,Winforms,我确实为标签的边框颜色更改编写了代码,但同样的代码对textbox不起作用 这是密码 label1.Paint += new System.Windows.Forms.PaintEventHandler(this.label1_Paint); void label1_Paint(object sender, PaintEventArgs e) { ControlPaint.DrawBorder(e.Graphics, label1.Di

我确实为标签的边框颜色更改编写了代码,但同样的代码对textbox不起作用

这是密码

    label1.Paint += new System.Windows.Forms.PaintEventHandler(this.label1_Paint);


    void label1_Paint(object sender, PaintEventArgs e)
        {
            ControlPaint.DrawBorder(e.Graphics, label1.DisplayRectangle, Color.Red, ButtonBorderStyle.Solid);
        }

对于文本框,如何更改边框颜色?

A
textbox
没有
Paint
事件处理程序。因此,无法修改边框颜色之类的内容。与大多数控件一样,您可以更改
背景色
前景色
,并且可以输入
背景图像
。也许你可以在这方面有点创意,把东西分层,让它看起来像一个
BorderColor

但是,
面板
确实有一个
绘制
事件处理程序。基本上,您可以使用与
label
相同的方法来执行此操作,但使用一些不同的参数:

private void panel1_Paint(object sender, PaintEventArgs e)
    {
        ControlPaint.DrawBorder(e.Graphics, panel1.Bounds, Color.Red, ButtonBorderStyle.Solid);
    }

TextBox
没有
Paint
事件处理程序。因此,无法修改边框颜色之类的内容。与大多数控件一样,您可以更改
背景色
前景色
,并且可以输入
背景图像
。也许你可以在这方面有点创意,把东西分层,让它看起来像一个
BorderColor

但是,
面板
确实有一个
绘制
事件处理程序。基本上,您可以使用与
label
相同的方法来执行此操作,但使用一些不同的参数:

private void panel1_Paint(object sender, PaintEventArgs e)
    {
        ControlPaint.DrawBorder(e.Graphics, panel1.Bounds, Color.Red, ButtonBorderStyle.Solid);
    }

尝试使用UserControl创建自己的文本框。以下是一个示例,可以帮助您开始:

public partial class UserControl1 : UserControl
{
    private string text;

    public string Text

    {
        get { return textBox.Text; }

        set { textBox.Text = value; }
    }

    TextBox textBox = new TextBox();

    public UserControl1()

    {
        InitializeComponent();

        this.Paint += new PaintEventHandler(UserControl1_Paint);

        this.Resize += new EventHandler(UserControl1_Resize);

        textBox.Multiline = true;

        textBox.BorderStyle = BorderStyle.None;

        this.Controls.Add(textBox);
    }

    private void UserControl1_Resize(object sender, EventArgs e)

    {
        textBox.Size = new Size(this.Width - 3, this.Height - 2);

        textBox.Location = new Point(2, 1);
    }

    private void UserControl1_Paint(object sender, PaintEventArgs e)

    {
        ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, Color.Red, ButtonBorderStyle.Solid);
    }
}

尝试使用UserControl创建自己的文本框。以下是一个示例,可以帮助您开始:

public partial class UserControl1 : UserControl
{
    private string text;

    public string Text

    {
        get { return textBox.Text; }

        set { textBox.Text = value; }
    }

    TextBox textBox = new TextBox();

    public UserControl1()

    {
        InitializeComponent();

        this.Paint += new PaintEventHandler(UserControl1_Paint);

        this.Resize += new EventHandler(UserControl1_Resize);

        textBox.Multiline = true;

        textBox.BorderStyle = BorderStyle.None;

        this.Controls.Add(textBox);
    }

    private void UserControl1_Resize(object sender, EventArgs e)

    {
        textBox.Size = new Size(this.Width - 3, this.Height - 2);

        textBox.Location = new Point(2, 1);
    }

    private void UserControl1_Paint(object sender, PaintEventArgs e)

    {
        ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, Color.Red, ButtonBorderStyle.Solid);
    }
}

在表单上放置一个
面板
。设置属性
AutoSize=true
AutoSizeMode=AutoSizeMode.growthandshrink

将您的
文本框
放在此
面板上
。设置属性
Location=new Point(2,2)
(选择自己的坐标)和
BorderStyle=BorderStyle.None


为此面板创建
Paint
事件处理程序。绘制所需的边框。

在表单上放置一个
面板。设置属性
AutoSize=true
AutoSizeMode=AutoSizeMode.growthandshrink

将您的
文本框
放在此
面板上
。设置属性
Location=new Point(2,2)
(选择自己的坐标)和
BorderStyle=BorderStyle.None

为此面板创建
Paint
事件处理程序。画出所需的边框。

在重复问题中,是您要找的。奇怪的是,以4票获得认可的答案完全是误导!在重复问题中,这是您要查找的内容。奇怪的是,以4票获得认可的答案完全是误导!