DEL 或 BACKSPACE 未在被覆盖的 Windows::Forms::MaskedTextBox::OnKeyP

DEL or BACKSPACE not processed on overridden Windows::Forms::MaskedTextBox::OnKeyPress

本文关键字:Windows Forms MaskedTextBox OnKeyP 覆盖 BACKSPACE DEL      更新时间:2023-10-16

我正在构建一个只需要接受某些类型的字符的自定义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 和退格键工作。

我遇到了同样的问题。你的操作系统是什么(windows/linux/mac)?我认为这个问题与编译器有关。我最终使用Qt来识别这些键(Qt::Key_Delete Qt::Key_Backspace)。