2009-08-17 5 views
1

Я пытаюсь найти список выпадающего списка для изображений, которые я могу использовать в своей программе. Ему просто нужно отобразить несколько изображений в сетке с всплывающими подсказками для каждого из них, и мне нужно получить тот, который был выбран последним. Например (без панели вкладок в нем):Список раскрывающихся списков

enter image description here

К сожалению, мой бюджет денежного ноль, что означает, что я не могу купить любые элементы управления. Есть ли такие бесплатные, как это, или мне нужно будет работать над тем, чтобы создавать свои собственные?

Если ответ последний, есть ли полезные ссылки, которые вы могли бы мне дать, чтобы я мог начать работать над этим контролем?

+0

offtopic: использование wpf вместо этого облегчит проблему –

ответ

1

Вы можете наследовать свой класс от System.Windows.Forms.ComboBox и переопределить защищенный метод OnDrawItem(DrawItemEventArgs e)

Пример кода:

public class ImageComboBox : ComboBox 
{ 
    protected override void OnDrawItem(DrawItemEventArgs e) 
    { 
     // Get the item. 
     var item = this.Items[e.Index] as string; 
     if(item == null) 
     return; 

     // Get the coordinates to where to draw the image. 
     int imageX = e.Bounds.X + 5; 
     int imageY = (e.Bounds.Height - image.Height)/2; 

     // Draw image 
     e.Graphics.DrawImage(image, new Point(imageX, imageY)); 

     // Draw text 
     e.Graphics.DrawString(item, this.Font, new SolidBrush(Color.Black), 
      new PointF(textX, textY); 
    } 
} 

Код выше только быстрый и грязный пример, и не должны использоваться в качестве это (не нужно, например, создавать новый SolidBrush каждый раз, когда элемент рисуется), но я надеюсь, что это даст вам представление о том, как это сделать.

2

Существует множество реализаций выпадающих списков пользовательских изображений.

Вы должны посмотреть на DrawMode недвижимость ComboBox.

Вот простой пример, который реализует использование ImageList, унаследовав от ComboBox, установив DrawMode в OwnerDrawFixed и рисунок его элементы в OnDrawItem:

ComboBox With Images

Я не уверен, если этот подход позволяет вам реализовать список изображений в стиле сетки, о котором вы упоминаете, но взгляните на пример - я уверен, что он соответствует вашим потребностям.

Смежные вопросы