这是一个WinForms问题。
在带有SelectionMode = MultiSimple的ListBox中,如何获取当前关注的项目?
注意,我不想获取SelectedItem或SelectedItems,而是获取当前包含虚线的项目,例如ListView.FocusedItem。
答案 0 :(得分:1)
这有点像hacky,但我还没有找到更好的解决方案。
捕获DrawItem事件并将焦点索引保存在字段
上 if (e.State == DrawItemState.Focus) {
myfocus = e.Index;
}
// Draw the background of the ListBox control for each item.
e.DrawBackground();
// Define the default color of the brush as black.
if (brochas.Count != colores.Count) {
ProcesarBrochas();
}
// Draw the current item text based on the current Font
// and the custom brush settings.
if (Items.Count > e.Index) {
e.Graphics.DrawString(Items[e.Index].ToString(),
e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault);
}
// If the ListBox has focus, draw a focus rectangle around the selected item.
e.DrawFocusRectangle();
使用myFocus变量
答案 1 :(得分:0)
我认为默认情况下没有 - 用户控件可能是您唯一的选择。
您可能想重新考虑自己在做什么 - 为什么需要专注的而不是选择的?可能有不同的方式。
答案 2 :(得分:0)
这不是一个完美的解决方案,但解决方法可能是在模糊事件触发时将selectedItem
存储到“focusedItem
”,然后在需要时将其检索。