我认为这是常见问题,但我无法找到解决方案,所以我放在这里,
我正在开发Windows应用程序项目,因为我需要获取员工详细信息,其中我有限制,如工资列应该是数字,因此应用此列的密钥事件,但每当我尝试编辑datagridview中的员工地址它发射Keyup事件,我已经添加了数字条件所以我得到例外,我只有在我输入datagridview工资列中的工资金额时才调用此事件。
private void DataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control.GetType() == typeof(DataGridViewTextBoxEditingControl))
{
TextBox t = (TextBox)e.Control;
if (DataGridView.CurrentCell.ColumnIndex == DataGridView.Columns["Salary"].Index)
{
t.KeyUp += new KeyEventHandler(t_KeyUp);
}
}
}
private void t_KeyUp(object sender, KeyEventArgs e)
{
//CheckForInt = false;
try
{
//My Code Condition applies here
}
catch(Exception)
{
}
}
答案 0 :(得分:1)
您应该使用DataGridView
' KeyUp
事件
我会做那样的事情:
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (dataGridView1.CurrentCell != null && dataGridView1.IsCurrentCellInEditMode && dataGridView1.CurrentCell.ColumnIndex == ColumnSalary.Index)
{
...
}
}
使用编辑控件通常是一个坏主意,会引发许多问题。