/// <summary> /// 处理鼠标按键按下事件 /// </summary> /// <param name="e"></param> protected override void OnMouseClick(MouseEventArgs e) { CheckInvalidateState(); if (e.Button == System.Windows.Forms.MouseButtons.Left) { bool changed = false; ImageListBoxItem currentItem = GetItem(e.X, e.Y); if (this.MultiSelect) { if (currentItem != null) { currentItem.Selected = !currentItem.Selected; this.InvalidateItem(currentItem); changed = true; } } else { foreach (ImageListBoxItem item in this.Items) { if (item.Selected != (item == currentItem)) { item.Selected = (item == currentItem); this.InvalidateItem(item); changed = true; } } } if (changed) { OnSelectedIndexChanged(EventArgs.Empty); } } base.OnMouseClick(e); }
private void InvalidateItem(ImageListBoxItem item) { CheckInvalidateState(); if (item != null) { this.Invalidate(GetItemBounds(item)); } }
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object Value) { if (Value is InstanceDescriptor) { ImageListBoxItem item = new ImageListBoxItem(); InstanceDescriptor descriptor = (InstanceDescriptor)Value; return(item); } return(base.ConvertFrom(context, culture, Value)); }
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object Value, Type destinationType) { if (destinationType.Equals(typeof(InstanceDescriptor))) { //MessageBox.Show("aa"); ImageListBoxItem item = (ImageListBoxItem)Value; InstanceDescriptor descriptor = new InstanceDescriptor(typeof(ImageListBoxItem).GetConstructor(new Type[] { }), null, false); return(descriptor); } return(base.ConvertTo(context, culture, Value, destinationType)); }
public Rectangle GetItemBounds(ImageListBoxItem item) { CheckInvalidateState(); if (item == null) { throw new ArgumentNullException("item"); } int index = this.Items.IndexOf(item); if (index >= 0) { return(new Rectangle( 1, this.AutoScrollPosition.Y + this.RuntimeItemHeight * index, this.ClientSize.Width - 2, this.RuntimeItemHeight)); } else { throw new ArgumentOutOfRangeException("item not in list"); } }