public static void DrawFilterItems(this RepositoryItemImageComboBox riImageComboBox,
                                           ColumnFilterPopup.FilterComboBox filterComboBox, ListBoxDrawItemEventArgs eventArgs)
        {
            var filterItem        = eventArgs.Item as FilterItem;
            var imageComboBoxItem = GetImageComboBoxItem(riImageComboBox, filterItem);

            if (imageComboBoxItem == null)
            {
                return;
            }

            FillBackground(eventArgs);
            DrawImage(eventArgs, imageComboBoxItem);
            DrawDescription(eventArgs, imageComboBoxItem);
            eventArgs.Handled = true;
        }
        void ComboBox_Popup(object sender, EventArgs e)
        {
            ColumnFilterPopup.FilterComboBox popup = sender as ColumnFilterPopup.FilterComboBox;
            object value = GetFilterValueByColumn(popup.Properties.Tag as GridColumn);

            if (value == null)
            {
                return;
            }
            for (int i = 0; i < popup.Properties.Items.Count; i++)
            {
                FilterItem fi = popup.Properties.Items[i] as FilterItem;
                if (fi != null && value.Equals(fi.Value))
                {
                    popup.SelectedIndex = i;
                    return;
                }
            }
        }
        void OnDrawItem(object sender, ListBoxDrawItemEventArgs e)
        {
            ColumnFilterPopup.FilterComboBox fComboBox = sender as ColumnFilterPopup.FilterComboBox;
            FilterItem fItem = e.Item as FilterItem;

            if (fItem == null || fItem.Value is FilterItem)
            {
                return;
            }
            ImageComboBoxItem iItem = GetItem(fItem);

            if (iItem == null)
            {
                return;
            }
            FillBackground(e);
            DrawImage(e, iItem);
            DrawDescription(e, iItem);
            e.Handled = true;
        }