У меня есть приложение, которое отправляет Джобса в AIV. Теперь я получил TextBox, который получает данные от сканера штрих-кода. Я получил следующий пользовательский класс TextBox (получил его от: C #, ждите, пока пользователь закончит вводить текстовое поле ). Метод HandleDelayedTextChangedTimerTick запускается один раз, работает нормально и печатает «Hello world» через 10 секунд после ввода. Я также получил следующую форму: где я подключаюсь к роботу и задания ставятся в очередь в Form.CS.
У меня вопрос: как использовать HandleDelayedTextChangedTimerTick в Form.CS для запуска задания робота после ввода и задержки 10 секунд?
public class MyTextBox : TextBox
{
private TextBox textBox1;
private Timer m_delayedTextChangedTimer;
public event EventHandler DelayedTextChanged;
public MyTextBox() : base()
{
this.DelayedTextChangedTimeout = 10 * 1000; // 10 seconds
}
protected override void Dispose(bool disposing)
{
if (m_delayedTextChangedTimer != null)
{
m_delayedTextChangedTimer.Stop();
if (disposing)
m_delayedTextChangedTimer.Dispose();
}
base.Dispose(disposing);
}
public int DelayedTextChangedTimeout { get; set; }
protected virtual void OnDelayedTextChanged(EventArgs e)
{
if (this.DelayedTextChanged != null)
this.DelayedTextChanged(this, e);
}
protected override void OnTextChanged(EventArgs e)
{
this.InitializeDelayedTextChangedEvent();
base.OnTextChanged(e);
}
private void InitializeDelayedTextChangedEvent()
{
if (m_delayedTextChangedTimer != null)
m_delayedTextChangedTimer.Stop();
if (m_delayedTextChangedTimer == null || m_delayedTextChangedTimer.Interval != this.DelayedTextChangedTimeout)
{
m_delayedTextChangedTimer = new Timer();
m_delayedTextChangedTimer.Tick += new EventHandler(HandleDelayedTextChangedTimerTick);
m_delayedTextChangedTimer.Interval = this.DelayedTextChangedTimeout;
}
m_delayedTextChangedTimer.Start();
}
private void HandleDelayedTextChangedTimerTick(object sender, EventArgs e)
{
Timer timer = sender as Timer;
timer.Stop();
Console.WriteLine("Hello world");
this.OnDelayedTextChanged(EventArgs.Empty);
}
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(0, 0);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(100, 22);
this.textBox1.TabIndex = 0;
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
this.ResumeLayout(false);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
}