【发布时间】:2016-05-21 18:29:23
【问题描述】:
我正在让自己成为项目经理,我需要经常刷新项目列表。当我刷新项目管理器时,我想选择之前选择的项目。但是该选择导致我的文本框取消选择,因此,发生的情况是该文本框在键入一个键后取消选择。
所以概述会发生什么:
- 我尝试编辑一个文本框
- 版本导致项目更新 -> 程序调用 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 我确信问题是由那些标记为 (//HERE) 的行引起的,因为如果我将这些行注释掉,一切正常。 (除了 ListBox 没有保留它的选择,这就是我这样做的原因)
-
HideSelection 开启了吗?
-
什么是
CurrentlyShown?您的代码似乎仅适用于ProjectList(我假设右侧的 ListView)并在 CurrentShown 上调用 Clear 和 Add:我会检查这些方法:也许您正在将选择移到那里 -
@TaW 设置为真。
标签: c# winforms windows-forms-designer