我尝试用自动修正用户解决非常微不足道的部分问题'输入到文本框。我设法检测用户是否输入了号码(必要时)并控制其范围。现在,只要用户将其键入文本框,我就需要用逗号自动放置点。我希望以下代码片段可以正常工作:
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,.
有没有办法忽视这种自然的'。除了文本框?这是解决问题的最佳方法吗?
答案 0 :(得分:1)
您需要使用KeyPress
事件而不是KeyDown
事件。
此活动使用KeyPressEventArgs
,而不是
if (e->KeyCode == Keys::OemPeriod) {
你需要使用
if (e->KeyChar == '.') {