Привязка данных Winforms: Можно ли использовать TypeConverter вместо событий Format / Parse?

В форме Winforms я хочу предоставить пользователю визуальные подсказки, когда поле ввода содержит недопустимое значение. С этой целью, Я хочу связать свойство ForeColor метки поля ввода со свойством (логическим) IsPropertyValid базовой модели, чтобы метка становилась красной, когда IsPropertyValid == false .

В настоящее время у меня есть обработчик события для события формата привязки :

Controls["dateOfBirthLabel"].DataBindings["ForeColor"].Format += convertBoolToColor;
// (dateOfBirthLabel.ForeColor is bound to a boolean IsDateOfBirthValid property.)

void convertBoolToColor(object sender, ConvertEventArgs e)
{
    e.Value = (bool)e.Value ? Color.Black : Color.Red;
}

Если бы я хотел сделать это в WPF, то, я полагаю, я бы указал специальный преобразователь значения ( bool - Color ) непосредственно со связыванием в XAML. Самое главное, мне не пришлось бы ссылаться на конкретный элемент управления через его имя.

Я хотел бы сделать то же самое с моей формой Winforms. В идеале я мог бы указать объект TypeConverter для конкретной привязки непосредственно в конструкторе форм. true.object_id // 2 nil.object_id // 4 100 ....

Я играю с Ruby .object_id и заметил, что в нескольких последовательных сеансах irb я получаю такие же результаты:

false.object_id // 0
true.object_id // 2
nil.object_id // 4
100.object_id // 201

На самом деле, каждый целочисленный object_id кажется быть ((значение * 2) + 1).

С другой стороны, object_id данной строки никогда не будет прежним после выхода и повторного запуска irb.

Это вызывает у меня несколько вопросов:

  1. существует известная схема, по которой определяются определенные object_id ? Являются ли другие в основном случайными?
  2. Идентификаторы true, false и nil не являются последовательными. Есть ли способ спросить, какой объект представлен данным идентификатором? (Мне любопытно, к чему привязаны другие однозначные и идентификаторы.)
  3. Не могли бы вы (не то, что вы должны) написать запутанный Ruby, где вы используете идентификаторы известных объектов для ссылки на объекты, не называя их, например "

    Я читал, что после ручной установки некоторых плагинов Eclipse следует использовать параметр -clean для запуска Eclipse. Почему или что это делает?

    Должен ли я сделать что-то еще?

    Этот вопрос относится, в частности, к «Затмению Галилео» и Гелиосу.

22
задан N00b Pr0grammer 30 November 2016 в 13:10
поделиться

2 ответа

Нет, вы можете просто запустить eclipse.

В статье « поддержание чистоты работы eclipse » подробно описаны различные варианты использования опции «-clean».

Самый простой способ исправить запыленное рабочее пространство - использовать аргумент командной строки -clean для исполняемого файла eclipse.exe. Давайте посмотрим, что эта команда сообщает в справочной документации Eclipse:

если задано значение «true», все кэшированные данные, используемые фреймворком OSGi и средой выполнения eclipse, будут очищены. Это очистит кеши, используемые для хранения данных разрешения зависимостей пакетов и данных реестра расширений eclipse. Использование этой опции заставит eclipse повторно инициализировать эти кеши.

Аргумент -clean - это флаг одноразового использования, означающий, что после того, как вы запустили Eclipse с его помощью, вы можете удалить его, пока он вам снова не понадобится .
Если вы предпочитаете оставить его установленным, единственный побочный эффект от его использования - это увеличение времени запуска (в 2-3 раза дольше), что некоторые люди не возражают.

Теперь, возвращаясь к описанию выше, это может показаться не таким уж большим, я должен сказать, что вы были бы поражены тем, что иногда можно исправить с помощью -clean; некоторые действительно случайные вещи. Есть три простых способа использовать этот аргумент:

  • Отредактируйте файл eclipse.ini, расположенный в вашем каталоге установки Eclipse , и добавьте его в качестве первого аргумента в первой строке.
  • Отредактируйте ярлык, который вы используете для запуска Eclipse, и добавьте его в качестве первого аргумента.
  • Создайте пакетный сценарий или сценарий оболочки, который вызывает исполняемый файл Eclipse с аргументом -clean. Преимущество этого шага в том, что вы можете сохранить сценарий и использовать его каждый раз, когда хотите очистить рабочее пространство. Вы можете назвать его как-то вроде eclipse-clean.bat (или eclipse-clean.sh).
24
ответ дан 29 November 2019 в 05:28
поделиться

Если вы разрабатываете подключаемые модули Eclipse, вы хотите использовать параметр -clean в приложении Eclipse, которое вы запускаете для тестирования своих подключаемых модулей.

В противном случае, как уже ответил VonC, -clean - это одноразовый флаг, означающий, что после того, как вы запустили Eclipse с его помощью, вы можете удалить его, пока он вам снова не понадобится.

2
ответ дан 29 November 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: