C # Проблема с привязкой Windows.Forms.NumericUpDown - PullRequest
0 голосов
/ 12 марта 2019

У меня есть NumericUpDown элемент управления, который является частью UserControl.UserControl имеет свойство Value:

[Browsable(true)]
public override double Value
{
    get { return this.ControlValue; }
    set
    {
        this.ControlValue = value;
        InvokePropertyChanged(new PropertyChangedEventArgs("Value"));
    }
}

Я использовал DataBindings для NumericUpDown:

NumericUpDown.DataBindings.Add(nameof(NumericUpDown.Value), this, nameof(UserControl.Value), false, DataSourceUpdateMode.OnPropertyChanged);

Свойство Value раньше было Int32, но мне пришлось изменить его наДважды.И вдруг привязка перестала работать.

Я точно знаю, что свойство Value меняется, а значение NumericUpDown - нет.

Исправление: кажется, что Привязка не может обновить значение NumericUpDown только при изменении свойства Value.Изменение значения NumericUpDown ДЕЛАЕТ изменение свойства Value.

1 Ответ

0 голосов
/ 12 марта 2019

Итак, проблема на самом деле была не в элементе управления Binding или NumericUpDown, а в ключевом слове override. В этом случае привязка была перепутана, какое свойство изменялось - Значение UserControl или его базовый класс. Это было решено с помощью «new» вместо «override».

Все еще не могу понять, почему у меня не было этой проблемы раньше. Этому коду 4-5 месяцев, и он прекрасно работал до того, как я изменил тип свойства Value с Int32 на Double.

...