c# Один класс для всех текстовых полей winboms и событий комбинированного списка без прямого вызова - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу изменить цвет фона и размер шрифта, когда текстовое поле или поле со списком получили фокус. У меня 23 формы и много элементов управления. Я хочу пример одного publi c класса, который автоматически обрабатывает событие gotfocus и изменяет свойства. Я очень новичок. Ваше мнение эксперта ценится заранее. Большое спасибо

namespace LiabraryClasses.Library

{

// General Events Handler Class
class GEVENTS 
{

    public override void textBox_GotFocus(object sender, EventArgs e)
    {
        // Increase font size  and background color 


    }
}

}

1 Ответ

1 голос
/ 22 апреля 2020

Если у вас есть группа TextBox, в которых вам не нужно нормальное поведение, а какое-то специальное поведение, когда они получают фокус, аккуратный объектно-ориентированный способ сделать это - создать специальный класс TextBox, который изменяет Font и BackColor при фокусировке.

public class MySpecialTextBox : TextBox
{
    public Font FontIfFocussed {get; set;}            // TODO: assign default values
    public Font FontIfNotFocussed {get; set;}
    public Color BackColorIfFocussed {get; set;}
    public color BackColorIfNotFocussed {get; set;}

    protected override OnGotFocus(Eventargs e)
    {
        // TODO: set font size and background color of this TextBox
    }

    protected override OnLostFocus(Eventargs e)
    {
        // TODO: set font size and background color of this TextBox
    }
}

Таким образом, вы можете выбрать в Visual Studio Designer какой тип TextBox вы хотите: обычный или тот, который меняет цвет и цвет.

Но если Вы действительно хотите использовать оригинальный класс TextBox и изменить его:

class MyWindow
{
    private myTextBox;
    private Font fontIfFocussed = ..
    private Font FontIfNotFocussed = ...
    private Color BackColorIfFocussed = ...
    private color BackColorIfNotFocussed = ...

    public MyWindow()
    {
        this.myTextBox = new TextBox();
        this.fontIfFocussed = new Font(this.myTextBox.Font.FontFamily, 16);
        this.backColorIfFocussed = Color.AliceBlue;
        ...

        this.myTextBox.GotFocus += this.OnGotFocus();
    }

    public void OnGotFocus(object sender, EventArgs e)
    {
        if (sender as Control control != null)
        {
             control.Font = this.fontIfFocussed;
             control.BackColor = this.backColorIfFocussed;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...