【问题标题】:C# DataGridView Event to Catch When Cell (ReadOnly) Value has been changed by user用户更改单元格(只读)值时捕获的 C# DataGridView 事件
【发布时间】:2016-08-21 15:05:45
【问题描述】:

我有一个用 C# 编写的 Winforms 应用程序。

在 DataGridView 中,我将名为“Name”的列 (DataGridViewTextBoxColumn) 设置为 ReadOnly = true。

当用户右键单击“名称”列的单元格 -> 显示表单以设置值 -> 我希望应用程序知道:单元格的“名称”列的值已更改。

我尝试了很多事件但做不到,比如CellEndEdit、CellValueChanged

我只对在 ReadOnly = true 的“计划”列中捕获用户对数据的更改感兴趣。

为此使用哪个事件最好? 我附上以下信息:

① Image Description

② Source Code

【问题讨论】:

  • 我不是很懂你,如果它是只读的,它怎么能被用户更改?
  • 用户通过表单改变。我添加了图片描述和源代码。请确认!谢谢!
  • 将点击确定按钮后文本框的值与单元格的值进行比较。

标签: events datagridview cell


【解决方案1】:

CellEndEditCellValueChanged 属性仅在用户手动更改 DataGridView 的内容时才有效。您要做的就是读取Set_Value_Of_Name表单中TextBox的值,并与DataGridView单元格的值进行比较。

添加以下行:

btnOK.Click += (senderq, eq) =>
{
  frmValueOfName.Close();
  result = true;

  //Add this line
  if (txtValue.Text != dataGridView[currentMouseOverCol,currentMouseOverRow].Value.ToString())
  {
       MessageBox.Show("Value has been changed!");
  }
};

【讨论】:

  • 在主窗体中,事件使用什么?
  • 谢谢!我试试
  • Ryan B:运行良好!谢谢!除了我有类似下面文章的问题,你知道吗?请帮我!谢谢! [stackoverflow.com/questions/38977969/…
猜你喜欢
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
相关资源
最近更新 更多