在项目A中我利用datagridview的CellValidated事件,将表格中满足条件的cell设置为只读,代码如下,一直都正常。
现在我项目B也打算使用这种办法,datagridview和相关代码都是拷贝过去的,但是就是无法触发CellValidated事件,我分别对AB项目进行逐语句测试,发现B项目窗体直到加载完毕也不触发CellValidated事件,而A项目在窗体load事件(主要是设置datagridview数据源的代码)完成后就跳转到CellValidated事件了。
Private Sub dv_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dv.CellValidated
Me.Text = "=validated at " & Now.TimeOfDay.ToString
If e.ColumnIndex = 2 Then
If dv.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = 1 Then
dv.Rows(e.RowIndex).Cells("数量").ReadOnly = True
dv.Rows(e.RowIndex).Cells("数量").Style.BackColor = Color.Crimson
End If
可能是对CellValidated没有完全理解,请大家指教。
------解决思路----------------------
控件名是叫dv么?
------解决思路----------------------
正常的 CellValidated 事件应该是单元格编辑结束后触发的。
你 A 程序怎么会在窗体load事件中调用到的?
------解决思路----------------------
那是不正常的。
A程序中没有显式调用 dv_CellValidated() ?
------解决思路----------------------
您的问题是这样,利用控件触发事件这样的代码程序必须用手动动鼠标单击相关控件生成事件代码。
请不要直接复制事件代码。
用鼠标单击相关控件以生成事件代码,然后,修改或选择所需要的事件列表即可。
只有这样程序响应事件。