To reproduce: public Form1() { InitializeComponent(); DataTable dt = new DataTable(); DataColumn colId = new DataColumn("Id", typeof(int)); DataColumn colItem = new DataColumn("Item", typeof(string)); DataColumn colPrice = new DataColumn("Price", typeof(decimal)); dt.Columns.Add(colId); dt.Columns.Add(colItem); dt.Columns.Add(colPrice); for (int i = 0; i < 10; i++) { dt.Rows.Add(i % 5, "Item" + i, i * 2.25m); } GridViewDecimalColumn col = new GridViewDecimalColumn(); col.HeaderText = "Id"; col.Name = "Id"; col.FieldName = "Id"; radGridView1.Columns.Add(col); GridViewTextBoxColumn col1 = new GridViewTextBoxColumn(); col1.HeaderText = "Item"; col1.Name = "Item"; col1.FieldName = "Item"; radGridView1.Columns.Add(col1); GridViewMaskBoxColumn col2 = new GridViewMaskBoxColumn(); col2.HeaderText = "Price"; col2.Name = "Price"; col2.FieldName = "Price"; col2.MaskType = MaskType.Standard; col2.Mask = "###"; col2.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals; radGridView1.Columns.Add(col2); radGridView1.DataSource = dt; this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill; this.radGridView1.ValueChanging += radGridView1_ValueChanging; this.radGridView1.ValueChanged += radGridView1_ValueChanged; } private void radGridView1_ValueChanged(object sender, EventArgs e) { Console.WriteLine("ValueChanged"); } private void radGridView1_ValueChanging(object sender, ValueChangingEventArgs e) { Console.WriteLine("ValueChanging >> old value: " + e.OldValue + " new value: " + e.NewValue); }