Windows窗体C ++ - CLI:在文本框输入

时间:2015-06-01 13:17:11

标签: .net winforms input textbox c++-cli

我尝试用自动修正用户解决非常微不足道的部分问题'输入到文本框。我设法检测用户是否输入了号码(必要时)并控制其范围。现在,只要用户将其键入文本框,我就需要用逗号自动放置点。我希望以下代码片段可以正常工作:

private: System::Void sample_ctrl_KeyDown(System::Object^  sender,
        System::Windows::Forms::KeyEventArgs^  e) {
    if (e->KeyCode == Keys::OemPeriod) {
        int pos = timer_period_ctrl->SelectionStart;
        sample_ctrl->Text = sample_ctrl->Text->Insert(pos,",");
        sample_ctrl->SelectionStart = pos + 1;
        e->Handled = true;  
    }
}

我所期待的是捕获按下的键,用 Insert()自己处理它并告诉听众我做了必须做的事情

e->Handled = true;

然而,结果如下:

// Before hitting '.' key
    12

// After hitting '.' key
    12,.

有没有办法忽视这种自然的'。除了文本框?这是解决问题的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

您需要使用KeyPress事件而不是KeyDown事件。

此活动使用KeyPressEventArgs,而不是

if (e->KeyCode == Keys::OemPeriod) {

你需要使用

if (e->KeyChar == '.') {
相关问题