Exemplo n.º 1
0
        private void cmbCatalog_DrawItem(object sender, DrawItemEventArgs e)
        {
            if (e.Index < 0 || e.Index >= cmbCatalog.Items.Count)
            {
                return;
            }
            if (!(cmbCatalog.Items[e.Index] is GISDataComboItem))
            {
                return;
            }

            //DrawItemState.
            GISDataComboItem item = (GISDataComboItem)cmbCatalog.Items[e.Index];
            int level             = item.Level;

            if ((e.State & DrawItemState.ComboBoxEdit) == DrawItemState.ComboBoxEdit)
            {
                level = 0;
            }

            using (SolidBrush brush = new SolidBrush(Color.Black))
            {
                Rectangle rect = new Rectangle(e.Bounds.X + level * 11 + 18, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);
                if ((e.State & DrawItemState.Selected) == DrawItemState.Selected &&
                    (e.State & DrawItemState.ComboBoxEdit) != DrawItemState.ComboBoxEdit)
                {
                    brush.Color = Color.DarkBlue;
                    e.Graphics.FillRectangle(brush, rect);
                    brush.Color = Color.White;
                }
                else
                {
                    brush.Color = Color.White;
                    e.Graphics.FillRectangle(brush, rect);
                    brush.Color = Color.Black;
                }
                try
                {
                    Image image = _imageList.Images[item.ImageIndex];
                    e.Graphics.DrawImage(image, e.Bounds.X + level * 11 + 3, e.Bounds.Y, 16, 16);
                }
                catch
                {
                }
                e.Graphics.DrawString(item.ToString(), cmbCatalog.Font, brush, e.Bounds.X + level * 11 + 40,
                                      e.Bounds.Y + 2);
            }
        }
Exemplo n.º 2
0
        public void AddChildNode(GISDataComboItem exObject)
        {
            int index = cmbCatalog.SelectedIndex;

            if (index == -1)
            {
                index = cmbCatalog.Items.Count - 1;
            }

            int level = ((GISDataComboItem)exObject).Level;

            cmbCatalog.Items.Insert(index + 1,
                                    new GISDataComboItem(exObject.Text, exObject.FullName, exObject.ImageIndex, level)
            {
                Tag = exObject.Tag
            });

            cmbCatalog.SelectedIndex = index + 1;
        }