【问题标题】:Event before pressing a key or barcode scanner按键或条形码扫描仪之前的事件
【发布时间】:2013-09-03 19:56:29
【问题描述】:

我该怎么做?例如:

  1. 我有textBox1 并输入“SomeInput”然后离开textBox1。 (使用键盘或条码扫描器输入)
  2. 当我返回textBox1 时,“SomeInput”以textBox1.SelectAll() 突出显示。
  3. 当我按下一个键时,“SomeInput”会随着我按下的键而改变。 (或使用条码扫描器)

现在,我将如何在textBox3 中插入“SomeInput”(按键前的输入)?

我尝试了textchanged 事件,但它插入了按下的新键。

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
         textBox3.Text = textBox1.Text;
    }

Focus 事件是不允许的。

另一个问题:扫描条码时是否会发生textChanged?

【问题讨论】:

  • 包含您尝试过的代码会使这个问题更加清晰。
  • 您在寻找keyDownkeyUpKeyPress 事件吗?
  • 不要使用 SelectAll 方法,如果要附加文本,它将默认为插入点
  • @Sriram Sakthivel - 条码扫描仪最适用的是什么?
  • @Mark - 我不想附加文本 :)

标签: c# winforms events


【解决方案1】:

假设您在关注焦点后立即select all text in textBox1,在textBox1.Enter 中编写此代码可能会帮助您实现您的需求;

private void textBox1_Enter(object sender, EventArgs e)
{
 if (textBox1.SelectedText.Length == textBox1.TextLength)
 {
  textBox3.Text = textBox1.Text;
  textBox1.Text = "";
 }
}

【讨论】:

    【解决方案2】:

    试试 keyPress 事件

     private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
     {
       textBox3.Text = textBox1.Text; 
     }
    

    【讨论】:

    • textBox3.Text=textBox1.text ?.它不做OP要求的事情,它只是将textBox3同步到textBox1,这意味着textBox3的文本将始终与textBox1的文本相同。
    【解决方案3】:

    KeyPress 事件Text 更改之前触发,因此您可以将其用于您的目的:

    //KeyPress event handler for your textBox1
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
       if (textBox1.SelectionLength == textBox1.TextLength && textBox1.TextLength > 0){
                textBox3.Text = textBox1.Text;
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      相关资源
      最近更新 更多