Привязка данных и исключение выдачи в методе set

KDE также зависит от Boost.

Однако это в основном зависит от ваших целей, и даже в большей степени от вашей целевой аудитории, а не от объема вашего проекта. например TinyJSON (очень маленький проект), почти на 100% Boost, но это прекрасно, потому что предоставляемый им API похож на Boost и нацелен на программистов Boost, которым нужны привязки JSON. Однако многие другие библиотеки JSON не используют Boost, потому что они нацелены на другую аудиторию.

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

  • Редактировать: Причина, по которой мы не можем использовать его на работе, заключается в том, что наше программное обеспечение должно быть переносимым примерно на 7 различных платформ и на 4 компилятора. Таким образом, мы не можем использовать повышение, потому что не было доказано, что оно совместимо со всеми нашими целями, поэтому причина техническая. (У нас все хорошо с частью OpenSource и Boost License, так как иногда мы используем Boost для других целей)
5
задан Andy White 19 May 2009 в 00:14
поделиться

1 ответ

Хорошо, вот решение:

Нам нужно обработать событие BindingComplete объекта BinsingSource, CurrencyManager или BindingBanagerBase класс. Код может выглядеть так:

/* Note the 4th parameter, if it is not set, the event will not be fired. 
It seems like an unexpected behavior, as this parameter is called 
formattingEnabled and based on its name it shouldn't affect BindingComplete 
event, but it does. */
txtAge.DataBindings.Add("Text", dataSource, "Name", true)
.BindingManagerBase.BindingComplete += BindingManagerBase_BindingComplete;

...

void BindingManagerBase_BindingComplete(
  object sender, BindingCompleteEventArgs e)
{
  if (e.Exception != null)
  {
    // this will show message to user, so it won't be silent anymore
    MessageBox.Show(e.Exception.Message); 
    // this will return value in the bound control to a previous correct value
    e.Binding.ReadValue();
  }
}
4
ответ дан 15 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

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