Этот вопрос основан на вопросе, который я задал 4 дня назад сложный, если оператор в тексте изменил событие .Я очень старался, чтобы проблема System.ArgumentOutOfRangeException
не возникала.Проблема возникает из-за того, что оператор if находится в событии с измененным текстом и проверяет 8 символов, которые возникают во время выполнения.Таким образом, не все символы доступны сразу, но генерируются динамически с помощью ввода пользователя.Именно здесь начинается проблема: каждый раз, когда изменяется текст в текстовом поле, происходит событие, и в то же время программа сразу ожидает 8 символов и логически выдает сообщение об ошибке System.ArgumentOutOfRangeException
.Чтобы справиться с этой проблемой, я поместил оператор if в блок try-catch.Теперь это работает, но это хорошая практика?Есть ли другие / лучшие решения?Вот выдержка из моего кода:
private void txtBoxEingabe_TextChanged(object sender, EventArgs e)
{
axAcroPDF1.LoadFile("DONTEXISTS.pdf");
radioButton1.Visible = false;
radioButton2.Visible = false;
string text = txtBoxEingabe.Text.Substring(0, txtBoxEingabe.TextLength);
try
{
if (text.Substring(0, 3) == "SEH" && text.Substring(3, 1) == "M" && Convert.ToInt32(text.Substring(4, 4)) <= 2999 && (text.Substring(8, 1) == "H" || text.Substring(8, 1) == "R"))
{
radioButton1.Visible = true;
radioButton2.Visible = true;
radioButton1.Text = "1. Document";
radioButton2.Text = "2. Document";
this.radioButton1.CheckedChanged += RadioBtnChangedDC1;
this.radioButton2.CheckedChanged += RadioBtnChangedDC1;
}
}
catch
{
}
private void RadioBtnChangedDC1(object sender, EventArgs e)
{
if (radioButton1.Checked == true)
{
axAcroPDF1.LoadFile("C:\Doc1.pdf");
axAcroPDF1.gotoFirstPage();
Screensize = 100;
axAcroPDF1.setZoom(Screensize);
axAcroPDF1.setShowScrollbars(true);
axAcroPDF1.setShowToolbar(false);
}
else if (radioButton2.Checked == true)
{
axAcroPDF1.LoadFile("C:\Doc2.pdf");
axAcroPDF1.gotoFirstPage();
Screensize = 100;
axAcroPDF1.setZoom(Screensize);
axAcroPDF1.setShowScrollbars(true);
axAcroPDF1.setShowToolbar(false);
}
}
Эта программа должна быть средством просмотра, которое показывает сотни нескольких документов.