protected override void OnMouseClick(MouseEventArgs e) { base.OnMouseClick(e); ScrollableListItem item = HitTest(e.Location); if (item == null) { return; } //设置选择状态 bool bSelectChange = false; if (item.Selected) { if (this.ToggleSelection) { item.Selected = false; this.SelectedItems.Remove(item); bSelectChange = true; } } else { if (!this.MultipleSelect) { //只能单选时 foreach (ScrollableListItem i in this.SelectedItems) { i.Selected = false; } this.SelectedItems.Clear(); } item.Selected = true; this.SelectedItems.Add(item); bSelectChange = true; } //触发点击事件 ItemClickedEventArgs args = new ItemClickedEventArgs(item, e.Button, e.Location); OnItemClicked(args); if (bSelectChange) { //触发选择变化事件 OnSelectionChanged(new EventArgs()); } //描绘选择状态 this.Invalidate(item.Bounds); }
protected virtual void OnItemClicked(ItemClickedEventArgs args) { ItemClicked?.Invoke(this, args); }