【问题标题】:Change the border color of textbox in c# winforms - Newbie [duplicate]在c#winforms中更改文本框的边框颜色-新手[重复]
【发布时间】:2016-11-21 18:06:15
【问题描述】:

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

这是代码

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

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

【问题讨论】:

  • 在重复的问题中,this post 是您要查找的内容。奇怪的是,4 票接受的答案完全是误导!

标签: c# winforms


【解决方案1】:

尝试使用 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);
    }
}

【讨论】:

    【解决方案2】:

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

    但是,Panel 确实有一个 Paint 事件处理程序。本质上,您可以按照与 label 相同的方式进行操作,但参数有所不同:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-01-30
        • 1970-01-01
        • 2013-02-15
        • 1970-01-01
        • 2017-12-29
        • 1970-01-01
        • 1970-01-01
        • 2013-02-19
        • 1970-01-01
        相关资源
        最近更新 更多