我正在构建一个需要接受某些类型字符的自定义MaskedTextBox
。我用以下代码覆盖了原始类:
ref class CustomMaskedTextBox : System::Windows::Forms::MaskedTextBox
{
public:
CustomMaskedTextBox();
virtual void OnKeyPRess(System::Windows::Forms::KeyPressEventArgs^ e) override;
};
CustomMaskedTextBox::CustomMaskedTextBox(void) {}
CustomMaskedTextBox::~CustomMaskedTextBox(void) {}
void CustomMaskedTextBox::OnKeyPress(System::Windows::Forms::KeyPressEventArgs^ e)
{
if ((e->KeyChar >= 'A' && e->KeyChar <= 'Z') ||
(e->KeyChar >= '0' && e->KeyChar <= '9') ||
e->KeyChar == '*' ||
e->KeyChar == '-' ||
e->KeyChar == '/' ||
e->KeyChar == '.' ||
e->KeyChar == ' ' ||
e->KeyChar == (char) System::Windows::Forms::Keys::Back ||
e->KeyChar == (char) System::Windows::Forms::Keys::Delete)
{
e->Handled = false;
}
else
{
e->Handled = true;
}
}
由于某种原因,DEL和BACKSPACE键无法识别,在对象发短信时无效。
帮助感谢DEL和BACKSPACE键的工作。
答案 0 :(得分:0)
我有同样的问题。你的操作系统是什么(windows / linux / mac)?
我认为这个问题与编译器有关。我最终使用Qt来识别这些键(Qt::Key_Delete
Qt::Key_Backspace
)。