更改c#winforms中文本框的边框颜色 - 新手

时间:2016-11-21 18:06:16

标签: c# winforms

我确实为标签编写了边框颜色更改代码,但同样不适用于文本框。

这是代码

    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);
        }

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

3 个答案:

答案 0 :(得分:1)

TextBox没有Paint事件处理程序。因此,您无法修改边框颜色等内容。与大多数控件一样,您可以更改BackColorForeColor,然后输入BackgroundImage。也许有点创意,并将事物分层给出BorderColor的外观。

Panel确实有一个Paint事件处理程序。你可以这样做,基本上就像你label一样,但有一些不同的论点:

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

答案 1 :(得分:1)

尝试使用UserControl创建自己的textBox。以下是一个可以帮助您入门的示例:

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);
    }
}

答案 2 :(得分:1)

在表单上放置Panel。设置属性AutoSize = trueAutoSizeMode = AutoSizeMode.GrowAndShrink

TextBox放在此Panel上。设置属性Location = new Point(2, 2)(选择您自己的坐标)和BorderStyle = BorderStyle.None

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