C#问题与Windows.Forms.NumericUpDown绑定

问题描述 投票:0回答:1

我有一个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,但我不得不将其更改为Double。突然间绑定停止了工作。

我确定Value属性正在改变,但NumericUpDown的值不会改变。

更正:当Value属性更改时,Binding似乎无法更新NumericUpDown的值。更改NumericUpDown的值DOES更改Value属性。

c# binding numericupdown
1个回答
0
投票

所以,问题实际上不是在Binding或NumericUpDown控件中,而是在“override”关键字中。在这种情况下,绑定被混淆了哪个属性正在改变 - UserControl的Value或其基类。这是通过使用“new”而不是“override”来解决的。

仍然无法理解为什么我之前没有遇到这个问题。这段代码是4-5个月,在我将Value属性类型从Int32更改为Double之前完美运行。

© www.soinside.com 2019 - 2024. All rights reserved.