0
我处于多选列表视图的情况下,最多可以选择三个项目。目前,我有下面的代码C#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");
}
}
此代码的工作,最后我selectedGrassTextures哈希表只有三个要素。然而,GUI仍然显示该元素(选择/专注?)。所以对用户来说,它似乎仍然被选中。所以我想避免这种情况,有没有什么我可以用来找到最后一个元素点击,并把它的选择或焦点。另一种方式是,如果有事件发生在SelectedIndexChanged之前,我可以将我的< 4签入。有没有这样的事件,我认为ListView.SelectedIndexChanging,但在我的IDE它显示为不存在。我正在使用visual studio express和framework 3.5,因此我无法使用4.5。
由于这似乎正确的方式去然而 System.InvalidCastException:无法投型“System.EventArgs”的对象键入.'System.Windows .Forms.ListViewItemSelectionChangedEventArgs'。 所以我猜这不是在框架3.5或我失去了一些东西 – kenny
嗯,应该是,根据MSDN文档。你是否将它绑定到正确的事件? – TaW
this.grassListView.SelectedIndexChanged + = new System.EventHandler(this.grassListView_SelectedIndexChanged);这是我的绑定,但嗯,有不同的控件不同的EventHandlers,或者它总是System.EventHandler?我是一个java开发人员,所以这些东西让我感到困惑 – kenny