sonny210183

See also: Other Geeks@INDC

Membuat textbox dan DataGridView cells hanya boleh diinput dengan angka

 

ini khusus Windows Form, qlo di web form kan sudah ada kontrol khusus untuk validator.


Khusus tipe double yg hanya boleh pake angka trus titik, karakter titik pun cuma boleh sekali saja dan biasa diletakkan setelah angka. Ini diletakkan pada event textbox bernama _KeyPress. misalkan txtTotalCost adalah textbox. Maka methodnya adalah seperti ini

 private void txtTotalCost_KeyPress(object sender, KeyPressEventArgs e)
        {

  if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && e.KeyChar != '.')
            {
                e.Handled = true;
            }

            if (e.KeyChar == '.' && txtTotalCost.Text.Contains("."))
            {
                e.Handled = true;
            }

            if (e.KeyChar == '.' && this.Text.Length < 1)
            {
                e.Handled = true;
            }

 }

 

lalu jika hanya boleh integer saja (untuk quantity misalnya), maka akan menjadi seperti ini saja isinya:

            if ((e.KeyChar < '0' || e.KeyChar > '9') && Convert.ToInt16(e.KeyChar) != 8)
                {
                    e.Handled = true;
                }

 Itu semua hanya untuk textbox, lalu untuk suatu cells di datagridview maka yang perlu dilakukan adalah menambahkan kode pada event DataGridview _EditingControlShowing

 Misalnya myDGV adalah nama DataGridView, lalu tambahkan kode ini

  private void myDGV_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {

e.Control.KeyPress +=
        new KeyPressEventHandler(Control_KeyPress);

  }

 Setelah itu buat isi method Control_KeyPress

         private void Control_KeyPress(object sender, KeyPressEventArgs e)
        {

            String kolomditunjuk=gvConAssetContract.CurrentCell.OwningColumn.Name;
            String nilaicell;
            if (gvConAssetContract.CurrentCell.EditedFormattedValue == null)
            
                nilaicell = "";
             else
                nilaicell = gvConAssetContract.CurrentCell.EditedFormattedValue.ToString();

 //misalnya kolom BiayaSewa, HargaPerUnit adalah kolom yg bertipe double/money

  if (kolomditunjuk == "BiayaSewa" || kolomditunjuk == "HargaPerUnit ") //jika masih ada kolom laen, tambahkan || kolomditunjuk="..."

 { //hanya boleh angka+backspace+titik (.)
                if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && e.KeyChar != '.')
                {
                    e.Handled = true;
                }

                if (e.KeyChar == '.' && nilaicell.Contains("."))
                {
                    e.Handled = true;
                }

                if (e.KeyChar == '.' && nilaicell.Length < 1)
                {
                    e.Handled = true;
                }

            }

 else if (kolomditunjuk=="Stock" || kolomditunjuk="UnitYangDiminta") 
            { //misalkan stock dan unityang diminta hanya boleh diinput dengan tipe data integer

 

 if ((e.KeyChar < '0' || e.KeyChar > '9') && Convert.ToInt16(e.KeyChar) != 8)
                {
                    e.Handled = true;
                }
            }

            
            }

 

Share this post: | | | |

Comments

No Comments