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);
                }
            }
        }

posted @ 2010-09-03 16:59  浪漫稻草人  阅读(166)  评论(0)    收藏  举报