仅针对 datagridview c# 中的特定单元格触发 KeyUp 事件
KeyUp event fire for only specific cell in datagridview c#
我认为这是一个常见问题,但我找不到解决方案,所以我放在这里,
我正在研究 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)
{
}
}
您应该改用 DataGridView
的 KeyUp
事件。
我会做那样的事情:
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (dataGridView1.CurrentCell != null && dataGridView1.IsCurrentCellInEditMode && dataGridView1.CurrentCell.ColumnIndex == ColumnSalary.Index)
{
...
}
}
使用编辑控件通常不是一个好主意,它会给您带来很多问题。
我认为这是一个常见问题,但我找不到解决方案,所以我放在这里,
我正在研究 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)
{
}
}
您应该改用 DataGridView
的 KeyUp
事件。
我会做那样的事情:
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (dataGridView1.CurrentCell != null && dataGridView1.IsCurrentCellInEditMode && dataGridView1.CurrentCell.ColumnIndex == ColumnSalary.Index)
{
...
}
}
使用编辑控件通常不是一个好主意,它会给您带来很多问题。