我尝试用自动更正用户输入到文本框中的问题来解决非常微不足道的部分。我设法检测用户是否输入号码(如有必要)并控制其范围。现在我需要自动替换点与逗号任何时候用户键入它到文本框。我希望下面的代码片段可以正常工作:
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,.
有没有办法忽略这个自然的'。添加到文本框?这是解决这个问题的最好办法吗?
您需要使用KeyPress
事件而不是KeyDown
事件。
此事件使用KeyPressEventArgs
等而不是
if (e->KeyCode == Keys::OemPeriod) {
你需要使用
if (e->KeyChar == '.') {