pravin9455 Ответов: 3

Установить цвет фона на потерю фокуса из текстового поля в C класс#


Привет
Я хочу, чтобы захватить текущий цвет фона текстового поля на события gotfocus в текстовом поле . затем измените задний цвет на другой, а когда LostFocus вернет исходный цвет обратно в текстовое поле в моем унаследованном классе TextBox. Пытался это сделать, но с ошибками. Может кто-нибудь помочь.

Ошибки
Невозможно неявно преобразовать тип 'System.Рисование.Color' to 'string'

Имя "BckClr" не существует в текущем контексте

Спасибо

Что я уже пробовал:

class TextBoxGreen : TextBox
    {

        protected override void OnGotFocus(EventArgs e)
        {
            base.OnGotFocus(e);

            string BckClr = this.BackColor;// capturing current back color

           
                this.BackColor = Color.Lime;
           
        }

        protected override void OnLostFocus(EventArgs e)
        {
            base.OnLostFocus(e);
            this.BackColor = BckClr; // setting original back color on lost focus
        }
            
                      
    }

3 Ответов

Рейтинг:
21

ZurdoDev

строка BckClr = this.BackColor;// захват текущего заднего цвета

Ошибка заключается в том, что вы пытаетесь взять цвет и сохранить его в строковой переменной. Вы не можете этого сделать. этот.BackColor - это не строка.

Поэтому вместо объявления BckClr в виде строки объявите его как систему.Рисование.Цвет. Тогда вы можете хранить его.


BillWoodruff

просто изменив тип, вы не исправите этот беспорядок :)

ZurdoDev

Шаги ребенка. :)

Рейтинг:
0

BillWoodruff

а. создаете ли вы компонент времени разработки для проекта WinForm, который вы хотите отобразить в панели инструментов ?

b. как вы думаете, почему вы можете использовать строку для переменной, чтобы удерживать значение цвета ?

c. как вы думаете, почему переменная, созданная в методе, может быть доступна вне области действия этого метода ?

Ваш вопрос наводит меня на мысль, что вам нужно немного изучить базовую семантику и структуру C# и .NET.

Я и другие люди здесь можем помочь вам сосредоточиться.

У вас есть хорошая вводная книга ? Что вы делаете сейчас, чтобы учиться ?


pravin9455

Привет
Я бухгалтер, и программирование-это мое хобби, и я разрабатываю небольшие инструменты для помощи в офисной работе. Я уже давно работаю в VB.net долгое время и недавно перешел на C#. Я хочу разработать бухгалтерское программное обеспечение и надеюсь, что c# будет или это подходящий язык программирования, чтобы двигаться дальше?

Что касается моего вопроса, то я создал класс для наследования текстового поля, и везде, где я использую этот элемент управления, я делаю задний цвет лайма до high lite, когда пользователь устанавливает фокус на этом текстовом поле, и меняю цвет обратно на любой хардкорный цвет, когда теряет фокус.
Я хотел вернуть цвет к тому, который был установлен во время разработки на потерянном фокусе, а не на хардкоре в классе, который я обычно делал в VB.net-да.

Что касается обучения, то я ищу поиск в google, и у меня нет никакой вводной книги.

BillWoodruff

"Что касается обучения, то я ищу поиск в google, и у меня нет никакой вводной книги." Тогда вы не смотрели внимательно: поиск CodeProject. Вы найдете рекомендации для книг (некоторые бесплатные) в нескольких местах.

Нет ничего плохого в том, чтобы быть новичком: мы все когда-то были :) Но, чтобы не признать, что вам нужно изучить некоторые основы, которые являются фундаментальными даже для начала изучения сложного нового "языка", есть ... это неразумно.

"Рахи Гульзар-пхул киленге:" Кабир

Рейтинг:
0

Ravi Bhavnani

Этот ответ SO должен помочь вам достичь вашей цели:

WinForms - изменение обратного цвета текстового поля при фокусировке в приложении Windows[^]

/Рави