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