将控件与字节数组C#中的一个字节绑定的数据

本文关键字:字节 一个 数据 绑定 控件 字节数 数组 | 更新日期: 2023-09-27 18:22:25

我需要为字节数组中的一个字节绑定一个控件。例如,

byte[0]  -> bind with numericupdown1
byte[2] -> bind withe numericupdown3
.
.
.

使得当byte[0]改变时,numericupdown1中的值也改变。。。

我可以将控件绑定到属性,但我无法使用字节数组实现上述要求

请帮我一下。

提前感谢

谨致问候,Isha

将控件与字节数组C#中的一个字节绑定的数据

我不完全理解您要绑定什么以及在哪种技术/环境中绑定,但使用数组肯定无法做到这一点。这是因为数组在其元素发生更改时不会报告。

如果您在WPF或Silverlight中,并且正在将数组绑定到UI中的某种列表,请尝试使用ObservableCollection。

如果您在WinForms中,并且只是手动将元素绑定到某些控件,则需要为每个元素创建包装器。这很简单:只需创建一个简单的类,如:

public sealed class ValueWrapper : INotifyPropertyChanged
{
  public event PropertyChangedEventHandler PropertyChanged;
  public ValueWrapper(byte initialValue) {
     _value = initialValue;
  }      
  private byte _value;
  public byte Value {
     get { return _value; }
     set { 
        _value = value;
        OnPropertyChanged("Value");
     }
  }
  private void OnPropertyChanged(String name)
  {
    if (PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(name));
  }
}

现在您想要将字节数组转换为包装器数组。如果你使用LINQ:,这是微不足道的

var values = myBytes.Select(x=>new ValueWrapper(x)).ToArray();

现在,绑定包装器对象的Value属性,而不是字节(使用Binding类)

当您更改这些值时:

values[0].Value = 122;

您的UI将反映此更改(因为INotifyPropertyChanged),并显示该新值。

祝你好运!