c# - 如何在原始 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 方法后面进行覆盖
解决方案
我理解我们必须添加的答案
base.OnTextChanged(e);
在像这样覆盖之后
...
if (lenghtText + 1 == (this.Text.Length))
this.CaretIndex = caret + 1;
else
this.CaretIndex = caret;
}
}
catch
{
}
base.OnTextChanged(e);
}
推荐阅读
- mule-component - mule 域项目中的数据库连接器
- javascript - 我们如何在 LWC OSS 中实现导航到另一个页面
- python - 使用 Python 验证 Metamask 签名(以太坊)
- html - Axios html在div上显示值
- google-apps-script - 如何使用 Google Apps 脚本获取函数的单元格(不是当前单元格和非活动单元格)
- python - 使用 Python 更新 Azure 容器注册表公共访问 IP
- sql-server - 水平合并两个表中的数据
- graphql - Shopify Admin API、graphQL、创建草稿订单 - 添加产品
- javascript - 将文档添加到 Firestore 中具有随机生成的 id 的空文档的子集合
- python - 具有 0/1 外生变量的 Auto Arima