我自己也是项目经理,我需要经常刷新项目列表。当我刷新项目管理器时,我想选择之前选择的项目。但是这个选择会导致我的文本框取消选择,因此,在输入一个键后,该文本框会取消选择。
详细说明会发生什么:
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以及如何防止它?
答案 0 :(得分:0)
具有可选文本或项目的多个控件还附带属性HideSelection
。
这包括:
TextBox
RichTextBox
ListView
但不是
ListBox
CheckedListBox
DataGridView
无论喜欢与否,它始终默认为true
,因此只要焦点偏离控件,选择就会隐藏。
只需在设计器中将其设置为false
,无论重点在哪里,您都可以看到所有选择。
答案 1 :(得分:0)
OMG。老实说,我不知道为什么我没有看到它。
ProjectList.SelectedItem = selected;
//where ProjectList is ListBox<Project> and selected is Project
我在ProjectList(ListBox)中选择一个项目。我没有意识到它正在调用一个ProjectList_SelectedIndexChanged()
事件。
编辑:通过添加以下内容解决:
if (focused != null) {
this.ActiveControl = focused;
focused.Select(focused.TextLength,0);
}
焦点是一个TextBox,我设置为最后选择的TextBox,这是表格 谢谢你。