Итак, что я пытаюсь сделать, это иметь возможность непрерывно вводить все 10 текстовых полей. Я начинаю с первого, затем после того, как набрали 3 символа, измените фокус на следующий, а после того, как 3 символа набрали фокус на следующем.
Я выполнил эту часть, но что, если во втором текстовом поле уже есть текст? У меня есть попытки Clear (), но он создает ошибку, из-за которой я не могу набрать более 1 символа.
То есть, когда все текстовые поля заполнены ненужными данными, поэтому, когда я начинаю печатать с первого текстового поля 123, затем переходит ко второму текстовому полю 456, третьему 789 и т.д. но в то время как следующее поле очищается первым.
Я пытаюсь работать с этим:
public PingIPRange()
{
InitializeComponent();
txtF1.TextChanged += new EventHandler(NextField);
txtF2.TextChanged += new EventHandler(NextField);
txtF3.TextChanged += new EventHandler(NextField);
txtF4.TextChanged += new EventHandler(NextField);
txtT1.TextChanged += new EventHandler(NextField);
txtT2.TextChanged += new EventHandler(NextField);
txtT3.TextChanged += new EventHandler(NextField);
txtT4.TextChanged += new EventHandler(NextField);
txtInterval.TextChanged += new EventHandler(NextField);
txtRepeat.TextChanged += new EventHandler(NextField);
}
private void NextField(object sender, EventArgs e)
{
if (txtF1.TextLength == 3)
{
txtF2.Focus();
}
if (txtF2.TextLength == 3)
{
txtF3.Focus();
}
if (txtF3.TextLength == 3)
{
txtF4.Focus();
}
if (txtF4.TextLength == 3)
{
txtT1.Focus();
}
if (txtT1.TextLength == 3)
{
txtT2.Focus();
}
if (txtT2.TextLength == 3)
{
txtT3.Focus();
}
if (txtT3.TextLength == 3)
{
txtT4.Focus();
}
if (txtT4.TextLength == 3)
{
txtInterval.Focus();
}
if (txtInterval.TextLength == 3)
{
txtRepeat.Focus();
}
if (txtRepeat.TextLength == 3)
{
btnPing.Focus();
}
}
}