Итак, мне трудно сказать, не видя остальной части вашего кода, но вы объявляете y
вне вашего TxbSchüler_KeyDown
метода.Поскольку это выходит за рамки вашего метода, это означает, что другие методы в вашем классе будут иметь доступ к этой переменной и смогут обновить ее значение до завершения выполнения вашего метода (что может быть вашей проблемой).
Вполне возможно, учитывая ваш код, что y
обновляется вне метода TxbSchüler_KeyDown
.Я бы посмотрел в ваших ShowStudent
и ShowClass
методах, чтобы увидеть, используют ли они также переменную с именем y
ИЛИ , если эти методы обновляют listClasses.SelectedIndex
, так как они, вероятно, имеют доступ к обновлениюэто значение и, следовательно, возможность обновления y
, поскольку y
привязано к listClasses.SelectedIndex
.
В целом, рекомендуется хранить эти переменные локально для ваших методов, чтобы избежатьлюбые нежелательные изменения этой переменной за пределами вашего метода.Если вам нужно использовать эту переменную в другом процессе, просто передайте ее в качестве параметра другому методу или функции.
Короче говоря, если вы перемещаете объявление переменной y
внутри вашего метода, это может решить вашу проблему, если вы обновляете y
в другом месте своего кода (либо через обновление в * 1022).* или напрямую меняется y
).Если нет, то может быть более сложной проблемой управления.Но я сомневаюсь в этом.
Однако , тот факт, что вы повторно назначаете выбранный индекс как y
, только после вы вызываете два метода, которые имеют доступна измените эту переменную непосредственно перед этим переназначением, большой красный флаг заставляет меня поверить, что это может быть связано с областью видимости, которая обеспечивает нежелательное переназначение переменной y
.
Ссылка: Geeks For Geeks: C # Variable Scope
Надеюсь, ваше исправление так просто.С наилучшими пожеланиями.
PS - также назовите это что-то лучше, чем y
, так как оно будет торчать, как больной большой палец, в других местах вашего кода.y
является расплывчатым и неописательным.Назовите это что-то вроде int CurrentIndex