2016-11-21 123 views
0

我沒有爲標籤寫邊框顏色更改的代碼,但對於文本框不起作用。更改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); 
     } 

對於文本框如何改變邊框顏色?

+0

在重複的問題,[這篇文章](http://stackoverflow.com/a/39420512/3110834)是你在找什麼。奇怪的是,4票的接受答案完全是誤導! –

回答

1

嘗試使用用戶控件創建自己的文本框中。這裏是一個樣本,將讓你開始:

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

A TextBox沒有Paint事件處理程序。正因爲如此,你不能修改邊框顏色之類的東西。與大多數控件一樣,您可以更改BackColorForeColor,並且您可以輸入BackgroundImage。也許有點創意和層次的東西,讓出現BorderColor

A Panel確實有一個Paint事件處理程序。你可以這樣做,實際上,你做你label的方式相同,但有一些不同的參數:

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

在表單上放置一個Panel。設置屬性AutoSize = trueAutoSizeMode = AutoSizeMode.GrowAndShrink

把你的TextBox放在這個Panel。設置屬性Location = new Point(2, 2)(選擇您自己的座標)和BorderStyle = BorderStyle.None

爲此面板創建Paint事件處理程序。繪製所需的邊框。