Exemplo n.º 1
0
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            Graphics        g     = e.Graphics;
            TextFormatFlags flags = TextFormatFlags.Left | TextFormatFlags.VerticalCenter;

            #region 绘制 检查栏文字
            if (this._searchText != string.Empty)
            {
                // 按""检索:
                if (this._isSearchData)
                {
                    const string L_TEXT    = "按\"";
                    const string R_TEXT    = "\"检索";
                    Size         l_size    = Size.Ceiling(TextRenderer.MeasureText(L_TEXT, this.Font));
                    Size         text_size = Size.Ceiling(TextRenderer.MeasureText(this._searchText, this.Font));
                    Size         r_size    = Size.Ceiling(TextRenderer.MeasureText(R_TEXT, this.Font));
                    TextRenderer.DrawText(
                        g, L_TEXT, this.Font, this.SearchTextBound, Color.FromArgb(132, 132, 132), flags);
                    Rectangle rect = this.SearchTextBound;
                    rect.X     += l_size.Width;
                    rect.Width -= l_size.Width;
                    TextRenderer.DrawText(g, this._searchText, this.Font, rect, Color.Red, flags);
                    rect.X    += text_size.Width;
                    rect.Width = r_size.Width;
                    TextRenderer.DrawText(g, R_TEXT, this.Font, rect, Color.FromArgb(132, 132, 132), flags);
                }
                else
                {
                    const string NOTIFY_TEXT = "无法匹配:";
                    Size         size        = Size.Ceiling(TextRenderer.MeasureText(NOTIFY_TEXT, this.Font));
                    TextRenderer.DrawText(
                        g,
                        NOTIFY_TEXT,
                        this.Font,
                        this.SearchTextBound,
                        Color.FromArgb(132, 132, 132),
                        flags);
                    Rectangle rect = this.SearchTextBound;
                    rect.X     += (size.Width - 10);
                    rect.Width -= size.Width;
                    TextRenderer.DrawText(g, this._searchText, this.Font, rect, Color.Red, flags);
                }
            }
            // 检索栏下边虚线
            using (Pen pen = new Pen(Color.FromArgb(132, 132, 132)))
            {
                pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
                g.DrawLine(pen,
                           this.SearchTextBound.Left,
                           this.SearchTextBound.Bottom - 1,
                           this.SearchTextBound.Right,
                           this.SearchTextBound.Bottom - 1);
            }
            #endregion

            #region 绘制检索结果
            if (this.Items.Count > 0)
            {
                Font itemFont = new Font("黑体", 10.0f);
                for (int i = 0; i < this.Items.Count; i++)
                {
                    ChooseListItem item = this.Items[i];
                    if (item.MouseState == EMouseState.MouseMove)
                    {
                        using (Brush brush = new SolidBrush(Color.FromArgb(200, 227, 252)))
                        {
                            g.FillRectangle(brush, item.Bounds);
                        }
                        using (Pen pen = new Pen(Color.FromArgb(104, 167, 246)))
                        {
                            g.DrawLine(
                                pen,
                                item.Bounds.X,
                                item.Bounds.Y,
                                item.Bounds.Right - 1,
                                item.Bounds.Y);
                            g.DrawLine(
                                pen,
                                item.Bounds.X,
                                item.Bounds.Bottom - 1,
                                item.Bounds.Right - 1,
                                item.Bounds.Bottom - 1);
                        }
                    }
                    TextRenderer.DrawText(
                        g,
                        this.Items[i].Text,
                        itemFont,
                        item.Bounds,
                        Color.FromArgb(0, 85, 170),
                        flags);
                }
            }
            #endregion
        }
Exemplo n.º 2
0
 public int IndexOf(ChooseListItem value)
 {
     return(this._list.IndexOf(value));
 }
Exemplo n.º 3
0
 public void Remove(ChooseListItem item)
 {
     this._list.Remove(item);
 }
Exemplo n.º 4
0
 public void Insert(int index, ChooseListItem item)
 {
     this._list.Insert(index, item);
 }
Exemplo n.º 5
0
 public bool Contains(ChooseListItem item)
 {
     return(this._list.Contains(item));
 }
Exemplo n.º 6
0
 public int Add(ChooseListItem item)
 {
     return(this._list.Add(item));
 }