Как я могу сделать переопределение за оригинальный метод TextChange - PullRequest
0 голосов
/ 21 октября 2018

Привет, я хочу сделать переопределение для всего 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 Text, просто сделайте Override и не переходите в метод TextChange. Как я могу это исправить, я хочу сделать переопределение за оригинальным методом TextChange

1 Ответ

0 голосов
/ 21 октября 2018

Я понимаю ответ, который мы должны добавить

base.OnTextChanged(e);

после переопределения переопределения, как это

    ...

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


                }
                catch
                {

                }
    base.OnTextChanged(e);

}
...