DataGridViewTextBoxEditingControl 的键盘事件避免0.00.99类似的输入
/// <summary>
/// 编辑控件展示
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
#region 样式设置
DataGridViewTextBoxEditingControl ec = e.Control as DataGridViewTextBoxEditingControl;
//ec.BorderStyle = BorderStyle.None;
e.CellStyle.Padding = new Padding(0);
ec.Margin = new Padding(0);
e.CellStyle.BackColor = Color.Aquamarine;
ec.BorderStyle = BorderStyle.Fixed3D;
ec.Focus();
ec.SelectAll();
ec.Top = 0;
ec.Left = 0;
#endregion
ec.KeyPress += new KeyPressEventHandler(ec_KeyPress);
}
private void ec_KeyPress(object sender, KeyPressEventArgs e)
{
DataGridViewTextBoxEditingControl ec = sender as DataGridViewTextBoxEditingControl;
int kc=e.KeyChar;
if ((kc < 48 || kc > 57) && kc != 8)
e.Handled = true;
if (kc == 48&&ec.Text=="0")
{
e.Handled = true;
return;
}
if (kc == 46) //小数点
{
if (ec.Text.Length <= 0)
{
e.Handled = true; //小数点不能在第一位
return;
}
float f;
float oldf;
bool b1 = false, b2 = false;
b1 = float.TryParse(ec.Text, out oldf);
b2 = float.TryParse(ec.Text + e.KeyChar.ToString(), out f);
if (b2 == false)
{
if (b1 == true)
e.Handled = true;
else
e.Handled = false;
}
else
{
e.Handled = false;
}
}
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
DataGridViewCell cell = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
int[] irriWeek = GetIRRI_Index(e.RowIndex);
if (cell.Value.ToString().IndexOf(".") == -1)
{
if (cell.Value.ToString().IndexOf("0") == 0)
cell.Value = cell.Value.ToString().Substring(1);
}
else //含有"."
{
if (cell.Value.ToString().IndexOf(".") > 1)
{
if (cell.Value.ToString().IndexOf("0") == 0)
cell.Value = cell.Value.ToString().Substring(1);
}
}
}

浙公网安备 33010602011771号