小编Grz*_*rzM的帖子

DataGridView和BindingList:如何检查单元格值是否已更改?

我有datagridview,DataSource设置为myBindingList.列表项目实现INotifyPropertyChanged,因此datagridview自动响应列表中的更改.

现在我必须计算一些datagridview列的摘要.

它应该在以下时间完成:

  • 数据源更改(OnDataSourceChanged)
  • 单元格值更改(OnCellValueChanged)

第一个很清楚,但第二个问题我遇到了一个小问题.

当用户通过控制或更改时更改单元格的值时,将触发OnCellValueChanged:

myDataGridView.Rows[x].Cells[y].Value=newValue;
Run Code Online (Sandbox Code Playgroud)

但是关于:

myBindingList[myInvoice].Property1=newValue;
Run Code Online (Sandbox Code Playgroud)

DataGridView会自动刷新(INotifyPropertyChanged),但它不会触发OnCellValueChanged事件.

知道如何从我的DataGridView获取此类信息?它必须在DataGridView级别上完成,因为我正在编写自己的控件,扩展了dgv.

谢谢您的帮助.

c# datagridview winforms

5
推荐指数
1
解决办法
3321
查看次数

通过反射检查时缺少 NotNullAttribute

我们想要做的是列出具有 NotNull 属性的类的所有属性。来自 .NET 的,而不是来自 JetBrains 的。不幸的是,看起来 NotNullAttribute 在编译过程中(或在其他阶段)被删除,并且在运行时无法观察到。

有谁知道为什么会发生?在互联网/MSDN 上找不到解释。

这是一个可以轻松重现它的测试。它在第二个断言上失败。

public class Tests
{
    public class Foo
    {
        [NotNull, Required] public string? Bar { get; set; }
    }

    [Test]
    public void GetAttributesTest()
    {
        var type = typeof(Foo);
        var property = type.GetProperties()[0];

        Attribute.IsDefined(property, typeof(RequiredAttribute)).Should().BeTrue();
        Attribute.IsDefined(property, typeof(NotNullAttribute)).Should().BeTrue();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# reflection attributes nullable-reference-types

3
推荐指数
1
解决办法
160
查看次数

ComboBox SelectedItem 初始值不是来自 ItemsSource

我无法理解组合框的行为。

我有一个编辑视图来编辑现有的订单数据。这是我的部分订单数据的 VM:

public class OrderDataViewModel : ViewModelBase, IOrderDataViewModel
{
    private readonly ICustomersListProviderService _customersListProviderService;
    private readonly Order _order;

    public OrderDataViewModel(Order order, ICustomersListProviderService customersListProviderService)
    {
        Assign.IfNotNull(ref _order, order);
        Assign.IfNotNull(ref _customersListProviderService, customersListProviderService);
    }

    public DateTime CreationDate
    {
        get { return _order.CreationDate ?? (_order.CreationDate = DateTime.Now).Value; }
        set
        {
            if (_order.CreationDate == value) return;

            _order.CreationDate = value;
            OnPropertyChanged();
        }
    }

    public Customer Customer
    {
        get { return _order.Customer; }
        set
        {
            if (_order.Customer == value) return;

            _order.Customer = value;
            OnPropertyChanged();
        }
    }


    private …
Run Code Online (Sandbox Code Playgroud)

wpf binding combobox selecteditem mvvm

0
推荐指数
1
解决办法
4497
查看次数