2015-05-28 5 views
0

Я пытаюсь изменить цвет рамки текстового поля (txtUser) при событии нажатия кнопки (что-то вроде проверки формы, если вход пустой, затем вызовите метод, граница красная). Я сделал некоторые погуглите и нашел это:C# WInforms Изменение стиля рамки при событии нажатия кнопки

void myControl1_Paint(object sender, PaintEventArgs e) 
{ 
ControlPaint.DrawBorder(e.Graphics, this.txtUser.ClientRectangle, Color.Black, ButtonBorderStyle.Solid); 
} 

Но у меня возникают проблемы understaing, где и как я должен вызвать этот метод, или методы с (объект отправителя, PaintEventArgs е) как Params. Любое объяснение приветствуется.

ответ

0

Вам нужно наследовать от TextBox, а затем переопределить метод OnPaint. Что-то вроде этого должно работать:

public class ValidateEdit : TextBox 
{ 
    bool _InError; 

    public ValidateEdit() 
    { 
     SetStyle(ControlStyles.UserPaint, true); 
    } 

    public bool InError { 
     get { 
      return _InError; 
     } 
     set 
     { 
      _InError = value; 
      Refresh(); 
     } 
    } 

    protected override void OnPaint(PaintEventArgs e) 
    { 
     base.OnPaint(e); 
     if (InError) 
      ControlPaint.DrawBorder(e.Graphics, this.DisplayRectangle, Color.Red, ButtonBorderStyle.Solid); 
    } 
} 
+0

Вы _can_ делаете это с помощью событий, не создавая свой собственный контроль. Соответствующей частью вышеприведенного ответа является код «InError», который вы переключили бы через событие проверки. Наличие унаследованного текстового поля добавляет свойство для вас непосредственно в элемент управления, который упрощает и упрощает управление OO. –

Смежные вопросы