ComboBoxEdit의 목록에 마우스를 대었을 때 Bold 처리 할 수 있습니다.

 

#region comboBoxEdit1_DrawItem(sender, e)

/// <summary>
/// 사용자 지정 그림을 수행합니다.
/// </summary>
/// <param name="sender">이벤트 발생자 입니다.</param>
/// <param name="e">이벤트 인자 입니다.</param>
private void comboBoxEdit1_DrawItem(object sender, ListBoxDrawItemEventArgs e)
{
	if ((e.State & DrawItemState.Selected) > 0)
    {
    	Font boldFont = new Font(e.Appearance.Font.FontFamily, e.Appearance.Font.Size, FontStyle.Bold);

		e.Graphics.DrawString(e.Item.ToString(), boldFont, new SolidBrush(e.Appearance.ForeColor), e.Bounds);
		e.Handled = true;
    }
}

#endregion

ComboBoxEdit에 사용자 지정 이미지를 넣어서 사용하는 방법입니다.

 

코드에 Color와 HatchStyle이 적용되어 있는데 별도의 이미지가 없을 경우 사용합니다.

 

using DevExpress.XtraEditors.Controls;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            CreateColorsItems();
            CreateHatchStyleItems();
        }

        #region CreateColorsItems
        /// <summary>
        /// color 이미지를 추가하여 ComboBoxEdit에 내용을 추가합니다.
        /// </summary>
        private void CreateColorsItems()
        {
            List<Color> customColors = new List<Color>();
            customColors.AddRange(new Color[] { Color.Red, Color.Black, Color.Yellow, Color.Green, Color.Blue, Color.Brown, Color.White });
            foreach (Color color in customColors)
            {
                imageComboBoxEdit2.Properties.Items.Add(new ImageComboBoxItem(color.ToString(), color));
            }

            ImageList imagesColors = new ImageList();
            imageComboBoxEdit2.Properties.SmallImages = imagesColors;

            // 이미지의 크기를 설정합니다.
            foreach (ImageComboBoxItem item in imageComboBoxEdit2.Properties.Items)
            {
                int iWidth = 16;
                int iHeight = 16;
                Bitmap bmp = new Bitmap(iWidth, iHeight);
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    g.DrawRectangle(new Pen(Color.Black, 2), 0, 0, iWidth, iHeight);
                    g.FillRectangle(new SolidBrush((Color)item.Value), 1, 1, iWidth - 2, iHeight - 2);

                }
                imagesColors.Images.Add(bmp);
                item.ImageIndex = imagesColors.Images.Count - 1;
            }
        }

        #endregion

        #region CreateHatchStyleItems
        /// <summary>
        /// HetchStyle 이미지를 추가하여 ComboBoxEdit에 내용을 추가합니다.
        /// </summary>
        private void CreateHatchStyleItems()
        {
            imageComboBoxEdit1.Properties.Items.AddEnum(typeof(System.Drawing.Drawing2D.HatchStyle));

            ImageList imagesHS = new ImageList();
            imageComboBoxEdit1.Properties.SmallImages = imagesHS;

            // 이미지의 크기를 설정합니다.
            foreach (ImageComboBoxItem item in imageComboBoxEdit1.Properties.Items)
            {
                int iWidth = 16;
                int iHeight = 16;
                Bitmap bmp = new Bitmap(iWidth, iHeight);
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    g.DrawRectangle(new Pen(Color.Black, 2), 0, 0, iWidth, iHeight);
                    HatchBrush b = new HatchBrush((HatchStyle)item.Value, Color.Black, Color.White);
                    g.FillRectangle(b, 0, 0, iWidth, iHeight);

                }
                imagesHS.Images.Add(bmp);
                item.ImageIndex = imagesHS.Images.Count - 1;
            }
        }

        #endregion
    }
}

 

ComboBoxEdit 목록에 마우스를 가져다 대면 Tooltip이 출력됩니다.

 

using DevExpress.Utils.Win;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Popup;
using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
            comboBoxEdit.Popup += comboBoxEdit_Popup;

            comboBoxEdit.Properties.Items.Add("1");
            comboBoxEdit.Properties.Items.Add("2");
            comboBoxEdit.Properties.Items.Add("3");
            comboBoxEdit.Properties.Items.Add("4");
        }

        #region comboBoxEdit_Popup(sender, e)
        /// <summary>
        /// 팝업을 출력합니다.
        /// </summary>
        /// <param name="sender">이벤트를 처리합니다.</param>
        /// <param name="e"></param>
        private void comboBoxEdit_Popup(object sender, EventArgs e)
        {
            PopupListBoxForm form = (sender as IPopupControl).PopupWindow as PopupListBoxForm;
            form.ListBox.MouseMove += listBox_MouseMove;
            form.ListBox.MouseLeave += listBox_MouseLeave;
        }

        #endregion

        #region listBox_MouseLeave(sender, e)
        /// <summary>
        /// 마우스 포인터가 떨어졌을 때 동작합니다.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listBox_MouseLeave(object sender, EventArgs e)
        {
            toolTipController.HideHint();
        }

        #endregion

        #region listBox_MouseMove(sender, e)
        /// <summary>
        /// 마우스 포인터가 움직일 때 발생합니다.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listBox_MouseMove(object sender, MouseEventArgs e)
        {
            PopupListBox listBoxControl = sender as PopupListBox;
            ComboBoxEdit cmb = listBoxControl.OwnerEdit as ComboBoxEdit;
            int index = listBoxControl.IndexFromPoint(new Point(e.X, e.Y));
            if (index == -1)
            {
                toolTipController.HideHint();
            }
            else
            {
                string item = cmb.Properties.Items[index].ToString();
                toolTipController.ShowHint(item, listBoxControl.PointToScreen(new Point(e.X, e.Y)));
            }
        }

        #endregion
    }
}

+ Recent posts