392 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			392 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
using System.Drawing;
 | 
						|
using System.Drawing.Drawing2D;
 | 
						|
using System.Windows.Forms;
 | 
						|
using DevComponents.DotNetBar.Ribbon;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Rendering
 | 
						|
{
 | 
						|
    internal class Office2007CheckBoxItemPainter : CheckBoxItemPainter, IOffice2007Painter
 | 
						|
    {
 | 
						|
        #region Private Variables
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region IOffice2007Painter
 | 
						|
        private Office2007ColorTable m_ColorTable = null;
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets color table used by renderer.
 | 
						|
        /// </summary>
 | 
						|
        public Office2007ColorTable ColorTable
 | 
						|
        {
 | 
						|
            get { return m_ColorTable; }
 | 
						|
            set { m_ColorTable = value; }
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Internal Implementation
 | 
						|
        public override void Paint(CheckBoxItemRenderEventArgs e)
 | 
						|
        {
 | 
						|
            Graphics g = e.Graphics;
 | 
						|
            CheckBoxItem item = e.CheckBoxItem;
 | 
						|
            bool rtl = e.RightToLeft;
 | 
						|
            Font font = e.Font;
 | 
						|
            Office2007CheckBoxStateColorTable ct = this.GetCheckBoxStateColorTable(e);
 | 
						|
            bool standalone = e.ItemPaintArgs.ContainerControl is DevComponents.DotNetBar.Controls.CheckBoxX;
 | 
						|
 | 
						|
            Rectangle checkBoxPosition = Rectangle.Empty;
 | 
						|
            Rectangle textRect = Rectangle.Empty;
 | 
						|
            eTextFormat tf = eTextFormat.Default;
 | 
						|
            if (!(e.ItemPaintArgs != null && e.ItemPaintArgs.ContainerControl is DevComponents.DotNetBar.Controls.CheckBoxX ||
 | 
						|
                (e.ItemPaintArgs != null && e.ItemPaintArgs.ContainerControl is ItemControl) ||
 | 
						|
                (e.ItemPaintArgs != null && e.ItemPaintArgs.ContainerControl is Bar) ||
 | 
						|
                (e.ItemPaintArgs != null && e.ItemPaintArgs.ContainerControl is MenuPanel)))
 | 
						|
            {
 | 
						|
                tf |= eTextFormat.NoPrefix;
 | 
						|
            }
 | 
						|
 | 
						|
            Size checkSignSize = item.GetCheckSignSize();
 | 
						|
 | 
						|
            float baselineOffsetPixels = g.DpiY / 72f * (font.SizeInPoints / font.FontFamily.GetEmHeight(font.Style) * font.FontFamily.GetCellAscent(font.Style)) + .5f;
 | 
						|
            //float fontDescentPixels = g.DpiY / 72f * (font.SizeInPoints / font.FontFamily.GetEmHeight(font.Style) * font.FontFamily.GetCellDescent(font.Style));
 | 
						|
 | 
						|
            if (item.CheckBoxPosition == eCheckBoxPosition.Left && !rtl || item.CheckBoxPosition == eCheckBoxPosition.Right && rtl)
 | 
						|
            {
 | 
						|
                checkBoxPosition = new Rectangle(item.DisplayRectangle.X + (standalone ? 0 : item.CheckTextSpacing / 2),
 | 
						|
                    item.DisplayRectangle.Y + (item.DisplayRectangle.Height - checkSignSize.Height) / 2,
 | 
						|
                    checkSignSize.Width, checkSignSize.Height);
 | 
						|
                textRect = new Rectangle(checkBoxPosition.Right + item.CheckTextSpacing / 2, item.DisplayRectangle.Y,
 | 
						|
                    item.DisplayRectangle.Right - (checkBoxPosition.Right + item.CheckTextSpacing / 2), item.DisplayRectangle.Height);
 | 
						|
 | 
						|
                if (item.TextMarkupBody == null)
 | 
						|
                {
 | 
						|
                    if (!(item.Text.Contains(Environment.NewLine) || item.IsTextMultiLine) && item.TextSize.Width <= textRect.Width)
 | 
						|
                        textRect.Y = checkBoxPosition.Bottom - (int)baselineOffsetPixels - Dpi.Height(3);
 | 
						|
                    else
 | 
						|
                        tf |= eTextFormat.VerticalCenter | eTextFormat.WordBreak;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                    tf |= eTextFormat.VerticalCenter;
 | 
						|
            }
 | 
						|
            else if (item.CheckBoxPosition == eCheckBoxPosition.Right && !rtl || item.CheckBoxPosition == eCheckBoxPosition.Left && rtl)
 | 
						|
            {
 | 
						|
                checkBoxPosition = new Rectangle(item.DisplayRectangle.Right - (standalone ? 1 : item.CheckTextSpacing / 2) - checkSignSize.Width,
 | 
						|
                    item.DisplayRectangle.Y + (item.DisplayRectangle.Height - checkSignSize.Height) / 2,
 | 
						|
                    checkSignSize.Width, checkSignSize.Height);
 | 
						|
                textRect = new Rectangle(item.DisplayRectangle.X, item.DisplayRectangle.Y,
 | 
						|
                    checkBoxPosition.X - (item.DisplayRectangle.X + item.CheckTextSpacing / 2), item.DisplayRectangle.Height);
 | 
						|
 | 
						|
                if (item.TextMarkupBody == null)
 | 
						|
                {
 | 
						|
                    if (!item.Text.Contains(Environment.NewLine) && item.TextSize.Width <= textRect.Width)
 | 
						|
                        textRect.Y = checkBoxPosition.Bottom - (int)baselineOffsetPixels - Dpi.Height(3);
 | 
						|
                    else
 | 
						|
                        tf |= eTextFormat.VerticalCenter | eTextFormat.WordBreak;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                    tf |= eTextFormat.VerticalCenter;
 | 
						|
 | 
						|
                tf |= eTextFormat.Right;
 | 
						|
            }
 | 
						|
            else if (item.CheckBoxPosition == eCheckBoxPosition.Top)
 | 
						|
            {
 | 
						|
                checkBoxPosition = new Rectangle(item.DisplayRectangle.X + (item.DisplayRectangle.Width - checkSignSize.Width) / 2,
 | 
						|
                    item.DisplayRectangle.Y + item.VerticalPadding, checkSignSize.Width, checkSignSize.Height);
 | 
						|
                textRect = new Rectangle(item.DisplayRectangle.X, checkBoxPosition.Bottom,
 | 
						|
                    item.DisplayRectangle.Width, item.DisplayRectangle.Bottom - checkBoxPosition.Bottom);
 | 
						|
                tf |= eTextFormat.VerticalCenter | eTextFormat.HorizontalCenter;
 | 
						|
            }
 | 
						|
            else if (item.CheckBoxPosition == eCheckBoxPosition.Bottom)
 | 
						|
            {
 | 
						|
                checkBoxPosition = new Rectangle(item.DisplayRectangle.X + (item.DisplayRectangle.Width - checkSignSize.Width) / 2,
 | 
						|
                    item.DisplayRectangle.Bottom - item.VerticalPadding - checkSignSize.Height - 1, checkSignSize.Width, checkSignSize.Height);
 | 
						|
                textRect = new Rectangle(item.DisplayRectangle.X, item.DisplayRectangle.Y,
 | 
						|
                    item.DisplayRectangle.Width, checkBoxPosition.Y - (item.DisplayRectangle.Y + item.VerticalPadding));
 | 
						|
 | 
						|
                tf |= eTextFormat.VerticalCenter | eTextFormat.HorizontalCenter;
 | 
						|
            }
 | 
						|
 | 
						|
            if (item.CheckState == CheckState.Unchecked && item.CheckBoxImageUnChecked != null)
 | 
						|
                g.DrawImage(item.CheckBoxImageUnChecked, checkBoxPosition);
 | 
						|
            else if (item.CheckState == CheckState.Checked && item.CheckBoxImageChecked != null)
 | 
						|
                g.DrawImage(item.CheckBoxImageChecked, checkBoxPosition);
 | 
						|
            else if (item.CheckState == CheckState.Indeterminate && item.CheckBoxImageIndeterminate != null)
 | 
						|
                g.DrawImage(item.CheckBoxImageIndeterminate, checkBoxPosition);
 | 
						|
            else
 | 
						|
            {
 | 
						|
                if (item.CheckBoxStyle == eCheckBoxStyle.CheckBox)
 | 
						|
                {
 | 
						|
                    PaintCheckBox(g, checkBoxPosition, ct, item.CheckState);
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    PaintRadioButton(g, checkBoxPosition, ct, item.Checked);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            Color textColor = ct.Text;
 | 
						|
            if (!item.TextColor.IsEmpty) textColor = item.TextColor;
 | 
						|
            if (item.Text != "" && !textRect.IsEmpty && !textColor.IsEmpty && item.Orientation != eOrientation.Vertical && item.TextVisible)
 | 
						|
            {
 | 
						|
                if (item.TextMarkupBody != null)
 | 
						|
                {
 | 
						|
                    TextMarkup.MarkupDrawContext d = new TextMarkup.MarkupDrawContext(g, font, textColor, rtl);
 | 
						|
                    d.HotKeyPrefixVisible = !((tf & eTextFormat.HidePrefix) == eTextFormat.HidePrefix);
 | 
						|
                    if ((tf & eTextFormat.VerticalCenter) == eTextFormat.VerticalCenter)
 | 
						|
                    {
 | 
						|
                        textRect.Y = item.TopInternal + (item.Bounds.Height - item.TextMarkupBody.Bounds.Height) / 2;
 | 
						|
                        textRect.Height = item.TextMarkupBody.Bounds.Height;
 | 
						|
                    }
 | 
						|
                    else if ((tf & eTextFormat.Bottom) == eTextFormat.Bottom)
 | 
						|
                    {
 | 
						|
                        textRect.Y += (item.Bounds.Height - item.TextMarkupBody.Bounds.Height) + 1;
 | 
						|
                        textRect.Height = item.TextMarkupBody.Bounds.Height;
 | 
						|
                    }
 | 
						|
 | 
						|
                    item.TextMarkupBody.Bounds = textRect;
 | 
						|
                    item.TextMarkupBody.Render(d);
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
#if FRAMEWORK20
 | 
						|
                    if (e.ItemPaintArgs != null && e.ItemPaintArgs.GlassEnabled && item.Parent is CaptionItemContainer && !(e.ItemPaintArgs.ContainerControl is QatToolbar))
 | 
						|
                    {
 | 
						|
                        if (!e.ItemPaintArgs.CachedPaint)
 | 
						|
                            Office2007RibbonControlPainter.PaintTextOnGlass(g, item.Text, font, textRect, TextDrawing.GetTextFormat(tf));
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
#endif
 | 
						|
                        TextDrawing.DrawString(g, item.Text, font, textColor, textRect, tf);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            if (item.Focused && item.DesignMode)
 | 
						|
            {
 | 
						|
                Rectangle r = item.DisplayRectangle;
 | 
						|
                r.Inflate(-1, -1);
 | 
						|
                DesignTime.DrawDesignTimeSelection(g, r, e.ColorScheme.ItemDesignTimeBorder);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public void PaintRadioButton(Graphics g, Rectangle checkBoxPosition, Office2007CheckBoxStateColorTable ct, bool isChecked)
 | 
						|
        {
 | 
						|
            Rectangle r = checkBoxPosition;
 | 
						|
            r.Inflate(-1, -1);
 | 
						|
            using (GraphicsPath path = new GraphicsPath())
 | 
						|
            {
 | 
						|
                path.AddEllipse(r);
 | 
						|
                DisplayHelp.FillPath(g, path, ct.CheckBackground);
 | 
						|
            }
 | 
						|
            using (Pen pen = new Pen(ct.CheckBorder, 1))
 | 
						|
            {
 | 
						|
                g.DrawEllipse(pen, checkBoxPosition);
 | 
						|
            }
 | 
						|
            // Draw inner border
 | 
						|
            checkBoxPosition.Inflate(-3, -3);
 | 
						|
            using (Pen pen = new Pen(ct.CheckInnerBorder, 1))
 | 
						|
            {
 | 
						|
                g.DrawEllipse(pen, checkBoxPosition);
 | 
						|
            }
 | 
						|
 | 
						|
            if (!ct.CheckInnerBackground.IsEmpty)
 | 
						|
            {
 | 
						|
                if (ct.CheckInnerBackground.End.IsEmpty)
 | 
						|
                {
 | 
						|
                    r = checkBoxPosition;
 | 
						|
                    r.Inflate(-1, -1);
 | 
						|
                    using (SolidBrush brush = new SolidBrush(ct.CheckInnerBackground.Start))
 | 
						|
                        g.FillEllipse(brush, r);
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    // Draw gradient
 | 
						|
                    Region old = g.Clip;
 | 
						|
                    g.SetClip(checkBoxPosition, System.Drawing.Drawing2D.CombineMode.Replace);
 | 
						|
 | 
						|
                    using (GraphicsPath path = new GraphicsPath())
 | 
						|
                    {
 | 
						|
                        path.AddEllipse(checkBoxPosition);
 | 
						|
 | 
						|
                        using (PathGradientBrush brush = new PathGradientBrush(path))
 | 
						|
                        {
 | 
						|
                            brush.CenterColor = ct.CheckInnerBackground.Start;
 | 
						|
                            brush.SurroundColors = new Color[] { ct.CheckInnerBackground.End };
 | 
						|
                            brush.CenterPoint = new PointF(checkBoxPosition.X, checkBoxPosition.Y);
 | 
						|
                            g.FillEllipse(brush, checkBoxPosition);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    g.Clip = old;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            if (isChecked && !ct.CheckSign.IsEmpty)
 | 
						|
            {
 | 
						|
                r = checkBoxPosition;
 | 
						|
                //r.Inflate(-1, -1);
 | 
						|
                using (GraphicsPath path = new GraphicsPath())
 | 
						|
                {
 | 
						|
                    path.AddEllipse(r);
 | 
						|
                    DisplayHelp.FillPath(g, path, ct.CheckSign);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public void PaintCheckBox(Graphics g, Rectangle checkBoxPosition, Office2007CheckBoxStateColorTable ct, CheckState checkState)
 | 
						|
        {
 | 
						|
            Rectangle r = checkBoxPosition;
 | 
						|
            r.Inflate(-1, -1);
 | 
						|
            if (checkBoxPosition.Width < 5 || checkBoxPosition.Height < 5) return;
 | 
						|
 | 
						|
            DisplayHelp.FillRectangle(g, r, ct.CheckBackground);
 | 
						|
            DisplayHelp.DrawRectangle(g, ct.CheckBorder, checkBoxPosition);
 | 
						|
 | 
						|
            // Inside rectangle
 | 
						|
            checkBoxPosition.Inflate(-2, -2);
 | 
						|
 | 
						|
            if (!ct.CheckInnerBackground.IsEmpty)
 | 
						|
            {
 | 
						|
                if (ct.CheckInnerBackground.End.IsEmpty)
 | 
						|
                {
 | 
						|
                    r = checkBoxPosition;
 | 
						|
                    r.Inflate(-1, -1);
 | 
						|
                    DisplayHelp.FillRectangle(g, r, ct.CheckInnerBackground.Start);
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    // Draw gradient
 | 
						|
                    Region old = g.Clip;
 | 
						|
                    g.SetClip(checkBoxPosition, System.Drawing.Drawing2D.CombineMode.Intersect);
 | 
						|
 | 
						|
                    using (GraphicsPath path = new GraphicsPath())
 | 
						|
                    {
 | 
						|
                        path.AddRectangle(checkBoxPosition);
 | 
						|
 | 
						|
                        using (PathGradientBrush brush = new PathGradientBrush(path))
 | 
						|
                        {
 | 
						|
                            brush.CenterColor = ct.CheckInnerBackground.Start;
 | 
						|
                            brush.SurroundColors = new Color[] { ct.CheckInnerBackground.End };
 | 
						|
                            brush.CenterPoint = new PointF(checkBoxPosition.X, checkBoxPosition.Y);
 | 
						|
                            g.FillRectangle(brush, checkBoxPosition);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    g.Clip = old;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            DisplayHelp.DrawRectangle(g, ct.CheckInnerBorder, checkBoxPosition);
 | 
						|
 | 
						|
            if (checkState == CheckState.Indeterminate)
 | 
						|
            {
 | 
						|
                checkBoxPosition.Inflate(-2, -2);
 | 
						|
                SmoothingMode sm = g.SmoothingMode;
 | 
						|
                g.SmoothingMode = SmoothingMode.None;
 | 
						|
                DisplayHelp.FillRectangle(g, checkBoxPosition, ct.CheckSign);
 | 
						|
                g.SmoothingMode = sm;
 | 
						|
            }
 | 
						|
            else if (checkState == CheckState.Checked && !ct.CheckSign.IsEmpty)
 | 
						|
            {
 | 
						|
                using (GraphicsPath path = GetCheckSign(checkBoxPosition))
 | 
						|
                    DisplayHelp.FillPath(g, path, ct.CheckSign);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private GraphicsPath GetCheckSign(Rectangle outterRect)
 | 
						|
        {
 | 
						|
            GraphicsPath path = new GraphicsPath();
 | 
						|
 | 
						|
            Rectangle r = outterRect;
 | 
						|
            r.Inflate(-1, -1);
 | 
						|
 | 
						|
            path.AddLine(r.X, r.Y + r.Height * .75f, r.X + r.Width * .3f, r.Bottom);
 | 
						|
            path.AddLine(r.X + r.Width * .4f, r.Bottom, r.Right, r.Y + r.Height * .05f);
 | 
						|
            path.AddLine(r.Right - r.Width * .3f, r.Y, r.X + r.Width * .25f, r.Y + r.Height * .75f);
 | 
						|
            path.AddLine(r.X + r.Width * .1f, r.Y + r.Height * .5f, r.X, r.Y + r.Height * .55f);
 | 
						|
            path.CloseAllFigures();
 | 
						|
 | 
						|
            return path;
 | 
						|
        }
 | 
						|
        protected virtual Office2007CheckBoxColorTable GetColorTable(CheckBoxItem item, System.Windows.Forms.Control container)
 | 
						|
        {
 | 
						|
            if (container == null)
 | 
						|
                return m_ColorTable.CheckBoxItem;
 | 
						|
 | 
						|
            Office2007ColorTable table = m_ColorTable;
 | 
						|
 | 
						|
            string key = Office2007ColorTable.GetContextualKey(typeof(Office2007CheckBoxColorTable), container.GetType());
 | 
						|
            object st = null;
 | 
						|
 | 
						|
            if (container is Bar)
 | 
						|
            {
 | 
						|
                if (table.ContextualTables.TryGetValue(key + "+" + ((Bar)container).BarType.ToString(), out st))
 | 
						|
                    return (Office2007CheckBoxColorTable)st;
 | 
						|
            }
 | 
						|
 | 
						|
            if (table.ContextualTables.TryGetValue(key, out st))
 | 
						|
                return (Office2007CheckBoxColorTable)st;
 | 
						|
 | 
						|
            return m_ColorTable.CheckBoxItem;
 | 
						|
        }
 | 
						|
        private Office2007CheckBoxStateColorTable GetCheckBoxStateColorTable(CheckBoxItemRenderEventArgs e)
 | 
						|
        {
 | 
						|
            CheckBoxItem item = e.CheckBoxItem;
 | 
						|
            if (m_ColorTable != null && BarFunctions.IsOffice2007Style(e.CheckBoxItem.EffectiveStyle))
 | 
						|
            {
 | 
						|
                Office2007CheckBoxColorTable ct = GetColorTable(e.CheckBoxItem, e.ItemPaintArgs.ContainerControl); // m_ColorTable.CheckBoxItem;
 | 
						|
                if (!item.GetEnabled())
 | 
						|
                    return ct.Disabled;
 | 
						|
                else if (item.IsMouseDown)
 | 
						|
                    return ct.Pressed;
 | 
						|
                else if (item.IsMouseOver)
 | 
						|
                    return ct.MouseOver;
 | 
						|
                return ct.Default;
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                ColorScheme cs = e.ColorScheme;
 | 
						|
                // Create color table based on the ColorScheme object...
 | 
						|
                Office2007CheckBoxStateColorTable ct = new Office2007CheckBoxStateColorTable();
 | 
						|
                if (!item.GetEnabled())
 | 
						|
                {
 | 
						|
                    ct.CheckBackground = new LinearGradientColorTable(cs.MenuBackground, Color.Empty);
 | 
						|
                    ct.CheckBorder = cs.ItemDisabledText;
 | 
						|
                    ct.CheckInnerBorder = cs.ItemDisabledText;
 | 
						|
                    ct.CheckInnerBackground = new LinearGradientColorTable();
 | 
						|
                    ct.CheckSign = new LinearGradientColorTable(cs.ItemDisabledText, Color.Empty);
 | 
						|
                    ct.Text = cs.ItemDisabledText;
 | 
						|
                }
 | 
						|
                else if (item.IsMouseDown)
 | 
						|
                {
 | 
						|
                    ct.CheckBackground = new LinearGradientColorTable(cs.MenuBackground, Color.Empty);
 | 
						|
                    ct.CheckBorder = cs.ItemPressedBorder;
 | 
						|
                    ct.CheckInnerBorder = cs.ItemPressedBorder;
 | 
						|
                    ct.CheckInnerBackground = new LinearGradientColorTable(cs.ItemPressedBackground, cs.ItemPressedBackground2);
 | 
						|
                    ct.CheckSign = new LinearGradientColorTable(cs.ItemPressedText, Color.Empty);
 | 
						|
                    ct.Text = cs.ItemPressedText;
 | 
						|
                }
 | 
						|
                else if (item.IsMouseOver)
 | 
						|
                {
 | 
						|
                    ct.CheckBackground = new LinearGradientColorTable(cs.MenuBackground, Color.Empty);
 | 
						|
                    ct.CheckBorder = cs.ItemHotBorder;
 | 
						|
                    ct.CheckInnerBorder = cs.ItemHotBorder;
 | 
						|
                    ct.CheckInnerBackground = new LinearGradientColorTable(cs.ItemHotBackground, cs.ItemHotBackground2);
 | 
						|
                    ct.CheckSign = new LinearGradientColorTable(cs.ItemHotText, Color.Empty);
 | 
						|
                    ct.Text = cs.ItemHotText;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    ct.CheckBackground = new LinearGradientColorTable(cs.MenuBackground, Color.Empty);
 | 
						|
                    ct.CheckBorder = cs.PanelBorder;
 | 
						|
                    ct.CheckInnerBorder = ColorBlendFactory.SoftLight(cs.PanelBorder, Color.White);
 | 
						|
                    ct.CheckInnerBackground = new LinearGradientColorTable(cs.MenuBackground, Color.Empty);
 | 
						|
                    ct.CheckSign = new LinearGradientColorTable(cs.ItemText, Color.Empty);
 | 
						|
                    ct.Text = cs.ItemText;
 | 
						|
                }
 | 
						|
                return ct;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |