首页 > 解决方案 > 如何在原始 TextChange 方法后面进行覆盖

问题描述

嗨,我想覆盖所有 textBox 但我也想做 TextChange 方法

我的 TextChange 方法是

private void TxtRozhaieKoleGharardad_OnTextChanged(object sender, TextChangedEventArgs e)
        {
            TryCatchBlock.ExecuteInTryCatch(() =>
            {

                if (TxtRozhaieKoleGharardad.Text != string.Empty)
                {
                    int roz = Convert.ToInt32(TxtRozhaieKoleGharardad.Text);
                    PersianDate date = TxtTarikhShoro.SelectedDate.AddDays(roz);
                    TxtTarikhPayan.SelectedDate = date;
                }
            }, ref ResultMessageTryCatch);
        }

我的覆盖代码是

class TextBox_JustNumbers : System.Windows.Controls.TextBox
    {
 protected override void OnTextChanged(TextChangedEventArgs e)
        {
            try
            {
                int caret = 0, lenghtText = 0;
                if (this.CaretIndex == 0 || this.CaretIndex == this.Text.Length)
                    this.SelectionStart = this.Text.Length;

                string value = this.Text.Replace(",", "");
                decimal ul;
                if (decimal.TryParse(value, out ul))
                {
                    caret = this.CaretIndex;
                    lenghtText = this.Text.Length;

                    this.Text = string.Format("{0:#,#}", ul);


                    if (lenghtText + 1 == (this.Text.Length))
                        this.CaretIndex = caret + 1;
                    else
                        this.CaretIndex = caret;
                }


            }
            catch
            {

            }
        }
    }

因此,当我运行此代码并更改 textBox 文本时,只需覆盖而不进入 TextChange 方法如何修复它,我想在原始 TextChange 方法后面进行覆盖

标签: c#classoverriding

解决方案


我理解我们必须添加的答案

base.OnTextChanged(e);

在像这样覆盖之后

    ...

                        if (lenghtText + 1 == (this.Text.Length))
                            this.CaretIndex = caret + 1;
                        else
                            this.CaretIndex = caret;
                    }


                }
                catch
                {

                }
    base.OnTextChanged(e);

}

推荐阅读