Я нахожусь в ситуации с множественным выбором ListView, где можно выбрать максимум три элемента. В настоящее время у меня есть следующий код
Код: Выделить всё
private void grassListView_SelectedIndexChanged(object sender, EventArgs e)
{
string landType = this.grassLandTypeComboBox.Text;
if (this.grassListView.SelectedIndices.Count < 4)
{
ArrayList selectedGrassTextures = (ArrayList)((Hashtable)this.paintGrass[landType])["textures"];
selectedGrassTextures.Clear();
foreach (ListViewItem listViewItem in this.grassListView.SelectedItems)
{
selectedGrassTextures.Add(listViewItem.Text);
}
}
else
{
MessageBox.Show("You cannot have more than 3 grasses selected for any given attribute type");
}
}
этот код работает, и в итоге моя HashTable selectedGrassTextures содержит только три элемента. Однако графический интерфейс по-прежнему показывает элемент как (выбранный/сфокусированный?). Так что пользователю кажется, что он все еще выбран. Поэтому мне нравится предотвращать это, есть ли что-нибудь, что я могу использовать, чтобы найти последний элемент, на который щелкнули, и поместить его выделение или фокус. Другой способ - если есть событие Before SelectedIndexChanged, в которое я могу переместить свою проверку < 4. Я подумал, что есть такое событие, ListView.SelectedIndexChanging, но в моей IDE оно отображается как несуществующее. Я использую Visual Studio Express и Framework 3.5, не могу использовать 4.5 для своих задач.