【问题标题】:DataGridView get pre-changed cell valueDataGridView 获取预先更改的单元格值
【发布时间】:2014-11-13 14:09:28
【问题描述】:

我正在尝试在单元格更改之前获取单元格的值。因此,当我进行.Text 更改时,我想在更改文本之前获取更改前的值。是否有会触发的事件允许我获取这些数据?

我尝试过使用 BeginCellEdit、CellValidating 等...但是这些都没有触发,当值更新时,它们甚至没有在方法调用上达到我的断点。

我宁愿在更改期间不必手动删除大量 get .Texts,而只希望一个事件获得预先更改的值。是否有任何其他方法或方法可以获得预先更改的单元格值?

【问题讨论】:

  • 我转到 DataGridView 上的事件并双击 CellValidating 之类的项目,然后将我带到它的代码方法。现在,当我更新值时它不是手动的,我只需单击一个按钮,我的程序就会在某个地方执行 .Text =... 进行更改。这有关系吗?
  • 例如,我点击我的按钮,它决定像这样更新frameGridView.Rows[frameNumber].Cells[1].Value = subArray[0],这不像我用鼠标点击一个单元格并自己更改它。不管这是否重要,我都不是。我的 CellChanged 事件触发得很好,但没有先前的数据。 (预先更改的数据)
  • 我只是不想在更改值之前放弃一堆 get .Texts。我只是展示了一个部分,其中显示了最近的更改。

标签: c# datagridview


【解决方案1】:

创建一个无需重复代码的方法怎么样?

而不是这样调用:

frameGridView.Rows[frameNumber].Cells[1].Value = subArray[0];

在实际更新单元格之前,创建一个对旧值执行所需操作的方法:

private void UpdateGrid(int rowIndex, int columnIndex, string newValue)
{
    var cell = frameGridView.Rows[frameNumber].Cells[1];

    var oldValue = Convert.ToString(cell.Value);
    // display oldValue in the section that shows recent changes

    cell.Value = newValue;  // update the cell
}

然后同样调用:

UpdateGrid(frameNumber, 1, subArray[0]);

【讨论】:

    【解决方案2】:

    希望对您有所帮助:

    private string oldValue;
    private bool isValid;
    
    void myDataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
    {
     this.isValid= true;
     this.oldValue= Convert.ToString(this[e.ColumnIndex, e.RowIndex].Value);
    
     if (!isValid(this.myDataGridView(e))
     isValid= false;
    }
    
    void myDataGridView_CellValidated(object sender, DataGridViewCellValidatingEventArgs e)
    {
     if (!isValid)
     this[e.ColumnIndex, e.RowIndex].Value = this.oldValue;
    }
    

    【讨论】:

    • 我说,“我已经尝试使用 BeginCellEdit,CellValidating”,由于某种原因,CellValidating 不会为我触发。
    • 您可以重新查询DataTable的数据源以获取预先更改的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多