Q. In C#, how do I set focus on first field (which is limited to 8 characters read by bar code) and then after barcode input is done, automatically focus is set to field 2?

Asked by r. Answered by the Wonk on December 2, 2002

A.

You can’t make it quite automatic, but if you can catch the event when barcode data is available, you set the control to have focus in your code using the ActiveControl property of the Form class:

 

class BarcodeForm : Form {

  ...

  void barCode1_DataAvailable(object sender, EventArgs e) {

    // Check that active control is a TextBox

    TextBox textBox = this.ActiveControl as TextBox;

    if( textBox == null ) return;

 

    // Get data from the barcode reader

    textBox.Text = GetBarcodeData();

 

    // Set the next active control

    if( textBox == textBox1 ) this.ActiveControl = textBox2;

  }

}

 

The ActiveControl property is the control that currently has focus and changing it changes the control with focus.

Feedback

I have feedback on this Ask The Wonk answer