Я делаю себя менеджером проекта, и мне нужно обновлять список проектов так часто. Когда я обновляю Менеджер проектов, я хочу выбрать элемент, который был ранее выбран. Но этот выбор заставляет мое текстовое поле отменить выбор, поэтому происходит то, что это текстовое поле отменяет выбор после ввода одного ключа.Выбранный TextBox отменяет выбор при изменении ListBox
Так обрисовать, что происходит:
- Я пытаюсь изменить один текстовом поле
- Издание вызывает обновление в проекте -> программа вызывает RefreshProjectList()
- RefreshProjectList() на отмеченную позицию причин выбранных текстовое поле чтобы отменить
- Результат: Вы должны выбрать текстовое поле после написания одного символа
These selected text boxes are struggling to be edited
Код:
private void RefreshProjectList() {
if (BlockListReload)
return;
Project selected = (Project)ProjectList.SelectedItem;
ProjectList.Items.Clear();
CurrentlyShown.Clear();
foreach(Project p in Projects){
if (p.state == State.Planned && ShowPlanned.Checked) {
CurrentlyShown.Add(p);
ProjectList.Items.Add(p);
}
if (p.state == State.Active && ShowActive.Checked) {
CurrentlyShown.Add(p);
ProjectList.Items.Add(p);
}
if (p.state == State.Finished && ShowFinished.Checked) {
CurrentlyShown.Add(p);
ProjectList.Items.Add(p);
}
if (p.state == State.Delayed && ShowDelayed.Checked) {
CurrentlyShown.Add(p);
ProjectList.Items.Add(p);
}
}
if (selected == null)
return;
if (ProjectList.Items.Contains(selected)) {
ProjectList.SelectedItem = selected; // IF I REMOVE THIS
} else {
if (ProjectList.Items.Count > 0)
ProjectList.SelectedIndex = 0; // OR THIS LINE, EVERYTHING WORKS
}
}
Если вам нужно больше коды, я буду рад предоставить, но я не хочу, чтобы спам вас с нагрузками неудобного кода.
В: Почему изменение выбранного элемента в ListBox вызывает снятие выделения с TextBox и как его предотвратить?
Я не думаю, что ошибка указана в коде. Я думаю, вы каким-то образом создаете новый экземпляр формы, которая повторно инициализирует всю форму. – jdweng
@jdweng Я уверен, что проблема вызвана теми строками, отмеченными (// ЗДЕСЬ), потому что, если я прокомментирую эти строки, все будет хорошо. (За исключением того, что ListBox не сохраняет свой выбор, поэтому я это делаю) – Meowxiik
Is HideSelection on? – TaW