在WPF中使用c#从两个单元格中获取值并将其相加并显示在另一个单元格中

本文关键字:单元格 获取 另一个 显示 WPF 两个 | 更新日期: 2023-09-27 18:18:34

我想在网格视图本身内部进行计算。column1和column2显示数据,因此在列3中应该减去column2-column1。Column1和column2仅为手动条目。我的问题是,当数据在两列中输入时,值应该自动反映在第三列中。对此有任何想法,我没有为此尝试任何代码,我正在寻找在哪种情况下我必须编写代码。

在WPF中使用c#从两个单元格中获取值并将其相加并显示在另一个单元格中

这是WPF中常见的场景,最简单的解决方案是在数据类型类中而不是在GridView中执行计算。在WPF中,我们喜欢创建实现INotifyPropertyChanged接口的自定义类来保存数据的属性,而不是使用DataTable和这些类的数据绑定集合到ItemsSource属性。

因此,如果您有一个表示数据的类,您可以简单地将数据绑定的另一个属性添加到第三列。假设您的自定义类属性被命名为Column1Column2Column3。您的属性应该像这样自动更新第三列:

public int Column1
{
    get { return column1; }
    set 
    {
        column1 = value; 
        NotifyPropertyChanged("Column1"); 
        NotifyPropertyChanged("Column3"); 
    }
}
public int Column2
{
    get { return column2; }
    set 
    { 
        column2 = value; 
        NotifyPropertyChanged("Column2"); 
        NotifyPropertyChanged("Column3"); 
    }
}
public int Column3
{
    get { return Column2 - Column1; }
}

如果您不熟悉数据绑定,您可以从MSDN上的数据绑定概述页面找到更多关于它的信息。

首先需要一个事件侦听器来查看网格视图中的值是否发生了变化

this.mygridview.CellEndEdit += mygridview_CellEndEdit;

然后在事件处理程序

protected void mygridview_CellEndEdit(object_sender, EventArgs e){
int row_changed = this.mygridview.CurrentCell.RowIndex;
int column1_value = Convert.toInt32(this.mygridview.Rows[row_changed].Cells[0]);
int column2_value = Convert.toInt32(this.mygridview.Rows[row_changed].Cells[1]);
this.mygridview.Rows[row_changed].Cells[2].Value = (column2_value - column1_value ).toString;

所有你需要做的就是检查两列都有数字,不是空的…只要记住,你的值将刷新,如果你有一些回发或如果gridview有一个数据源和值刷新。所以一定要小心。

            int row = Convert.ToInt32(grid_calc.SelectedIndex.ToString());
            object value = (this.grid_calc.Items[row] as DataRowView)[2];
            object value1 = (this.grid_calc.Items[row] as DataRowView)[3];
            int a = Convert.ToInt16(value);
            int b = Convert.ToInt16(value1);
            int c = a - b;
            (this.grid_calc.Items[row] as DataRowView)[4] = c;