Example #1
0
        // ========================================================================
        // Methods

        #region === Methods

        /// <summary>
        ///   Raises the <see cref = "ComboBox.DrawItem" /> event.
        /// </summary>
        /// <param name = "e">A <see cref = "DrawItemEventArgs" /> that contains the event data. </param>
        protected override void OnDrawItem(DrawItemEventArgs e)
        {
            e.DrawBackground();
            e.DrawFocusRectangle();

            object item = e.Index >= 0 ? Items[e.Index] : null;

            ControlDrawHelper.DrawImageComboBoxItem(e.Graphics, item, ImageList, ImageSize, e.Bounds, Font, ForeColor);

            base.OnDrawItem(e);
        }
        /// <summary>
        ///   Paints the current <see cref = "DataGridViewImageComboBoxColumnCell" />.
        /// </summary>
        /// <param name = "graphics">The <see cref = "T:System.Drawing.Graphics" /> used to paint the cell.</param>
        /// <param name = "clipBounds">A <see cref = "T:System.Drawing.Rectangle" /> that represents the area of the <see cref = "T:System.Windows.Forms.DataGridView" /> that needs to be repainted.</param>
        /// <param name = "cellBounds">A <see cref = "T:System.Drawing.Rectangle" /> that contains the bounds of the cell that is being painted.</param>
        /// <param name = "rowIndex">The row index of the cell that is being painted.</param>
        /// <param name = "elementState">A bitwise combination of <see cref = "T:System.Windows.Forms.DataGridViewElementStates" /> values that specifies the state of the cell.</param>
        /// <param name = "value">The data of the cell that is being painted.</param>
        /// <param name = "formattedValue">The formatted data of the cell that is being painted.</param>
        /// <param name = "errorText">An error message that is associated with the cell.</param>
        /// <param name = "cellStyle">A <see cref = "T:System.Windows.Forms.DataGridViewCellStyle" /> that contains formatting and style information about the cell.</param>
        /// <param name = "advancedBorderStyle">A <see cref = "T:System.Windows.Forms.DataGridViewAdvancedBorderStyle" /> that contains border styles for the cell that is being painted.</param>
        /// <param name = "paintParts">A bitwise combination of the <see cref = "T:System.Windows.Forms.DataGridViewPaintParts" /> values that specifies which parts of the cell need to be painted.</param>
        protected override void Paint(Graphics graphics,
                                      Rectangle clipBounds, Rectangle cellBounds, int rowIndex,
                                      DataGridViewElementStates elementState, object value,
                                      object formattedValue, string errorText,
                                      DataGridViewCellStyle cellStyle,
                                      DataGridViewAdvancedBorderStyle advancedBorderStyle,
                                      DataGridViewPaintParts paintParts)
        {
            //Call the base to draw the combo box itself.
            base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, value, null,
                       errorText, cellStyle, advancedBorderStyle, paintParts);

            //Now we will draw the current content of the box.
            DataGridViewImageComboBoxColumn column = ((DataGridViewImageComboBoxColumn)OwningColumn);

            if ((paintParts & DataGridViewPaintParts.Background) != 0 || (paintParts & DataGridViewPaintParts.All) != 0)
            {
                Rectangle rect = new Rectangle(cellBounds.X + 4, cellBounds.Y, cellBounds.Width - 4, cellBounds.Height - 1);
                ControlDrawHelper.DrawImageComboBoxItem(graphics, value, column.ImageList, column.ImageSize, rect, cellStyle.Font, cellStyle.ForeColor);
            }
        }