要做出這個效果,不能在mouseclick,click事件響應函數中寫代碼,因爲大部分空白區不會響應該事件,mousedown也不可,應用mouseup事件來響應該要求,代碼如下:
private void listView1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { WizardBase.IntermediateStep inter = (wizardControl1.WizardSteps[wizardControl1.CurrentStepIndex] as WizardBase.IntermediateStep); if (listView1.SelectedItems.Count > 0) { //if (ListViewTmpIndex != -1) //{ // listView1.Items[ListViewTmpIndex].Selected = false; //} //ListViewTmpIndex = listView1.Items[listView1.SelectedIndices[0]].Index; switch (listView1.Items[listView1.SelectedIndices[0]].Index) { case 0: //TODO:File if (inter != null) { inter.Subtitle = "打開一個或多個文件"; inter.Refresh(); } break; case 1: //TODO:Oracle if (inter != null) { inter.Subtitle = "連接一個OracleSpatial服務"; inter.Refresh(); } //wizardControl1. break; case 2: //TODO:PostgreSql if (inter != null) { inter.Subtitle = "連接一個PostGIS服務"; inter.Refresh(); } break; case 3: //TODO:ArcSDE if (inter != null) { inter.Subtitle = "連接一個Arc SDE服務"; inter.Refresh(); } break; case 4: //TODO:SQLServer if (inter != null) { inter.Subtitle = "連接一個SQLServer服務"; inter.Refresh(); } break; default: break; }//switch 選中的行 } else if (listView1.SelectedItems.Count <= 0)//點擊空白區 { if (this.listView1.FocusedItem != null) { ListViewItem item = this.listView1.GetItemAt(e.X, e.Y); if (item == null) { this.listView1.FocusedItem.Selected = true; } } } }//left_button_up }//listView1_MouseUp