0

我工作的公司拥有可笑的旧数据库系统和许多遗留应用程序,当它们遇到非 ascii 字符时会抛出严重错误。

由于他们意识到这些应用程序需要离开,他们开始将后端包装在 vb.net WinForms 应用程序中,并且在包装这些旧系统 1.5 年后,他们发现了这个错误。

他们聘请我来解决问题。:(

在许多情况下,UI 是使用来自 DevExpress 等第三方的数据绑定和 FormView-esque 解决方案构建的。因此,分解 UI 并使用类似于以下的一些中间效用函数重新组合它们需要大量工作:

TextBox.Text = Sanitize(dataObject.Value);
and
dataObject.Value = Sanitize(TextBox.Text);

我正在寻找一种可以破解 Applications CultureInfo(或其他一些属性)的方法,以便所有文本框本身只处理 ASCII,类似于许多 Web 浏览器似乎表现出的行为。

另请注意:许多文本输入来自 dev express,因此即使正在使用的文本框也被包裹起来。

有没有办法附加到表单的 ControlAdded 事件并将控件设置为仅处理 ASCII 或 utf-8/utf-7?

一定有人遇到过这种情况。如果我不能实施一些可怕的黑客攻击,我将需要 2 年的时间来修复所有这些应用程序。

4

1 回答 1

1

您可以递归处理ControlAdded每个表单以修改每个 TextBox。

然后,处理KeyPress事件并设置e.Handled = true您是否不喜欢该角色。

对于 DevExpress 编辑器,您需要处理TextEditTextBoxMaskBox,但不能同时处理两者。

于 2010-12-17T19:04:19.047 回答