У меня есть несколько TextBox, которые отображают угловые значения.Я форматирую их, используя различные пользовательские реализации IFormatProvider
, например: значение 1.5707963267949
может отображаться как 1.5707963267949
, 0.5π
или 90°
.Текстовые поля имеют одностороннюю привязку к данным, и я выполняю форматирование, обрабатывая событие Format
привязки:
void bindingToMyTextBox_Format(object sender, ConvertEventArgs e)
{
// angleValueFormat is one of a few a custom implementations of
// IFormatProvider performing the actual formatting work.
e.Value = String.Format(this.angleValueFormat, "{0:0.###}", (double)e.Value);
}
Я хочу разрешить пользователю вводить значения в том же формате, в котором они отображаютсяв. Так что мне нужно проанализировать TextBox.Text
, чтобы получить исходное значение 1.5707963267949
.Есть ли какой-нибудь интерфейс "IParserProvider"
, предоставляющий услуги парсинга, например IFormatProvider
в противоположном направлении?Или вы бы предложили другой подход?
Из того, что я понимаю, я не могу использовать свои IFormatProviders в методе Convert.ToDouble (String, IFormatProvider) , потому что для определения, в каком формате находится число для разбора, он используеттолько NumberFormatInfo
-объект, возвращаемый IFormatProvider.GetFormat()
, который я явно не могу использовать для указания необходимой информации.
Спасибо!
richn