DrawListViewSubItemEventArgs.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / DrawListViewSubItemEventArgs.cs / 1305376 / DrawListViewSubItemEventArgs.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Windows.Forms 
{ 

    using System.Diagnostics; 
    using System.Diagnostics.CodeAnalysis;
    using System;
    using System.ComponentModel;
    using System.Drawing; 
    using System.Windows.Forms.Internal;
    using Microsoft.Win32; 
    using System.Windows.Forms.VisualStyles; 

    ///  
    /// 
    ///     This class contains the information a user needs to paint ListView sub-items (Details view only).
    /// 
    public class DrawListViewSubItemEventArgs : EventArgs 
    {
 
        private readonly Graphics graphics; 
        private readonly Rectangle bounds;
        private readonly ListViewItem item; 
        private readonly ListViewItem.ListViewSubItem subItem;
        private readonly int itemIndex;
        private readonly int columnIndex;
        private readonly ColumnHeader header; 
        private readonly ListViewItemStates itemState;
        private bool     drawDefault; 
 
        /// 
        ///  
        ///     Creates a new DrawListViewSubItemEventArgs with the given parameters.
        /// 
        public DrawListViewSubItemEventArgs(Graphics graphics, Rectangle bounds, ListViewItem item,
                        ListViewItem.ListViewSubItem subItem, int itemIndex, int columnIndex, 
                        ColumnHeader header, ListViewItemStates itemState)
        { 
            this.graphics = graphics; 
            this.bounds = bounds;
            this.item = item; 
            this.subItem = subItem;
            this.itemIndex = itemIndex;
            this.columnIndex = columnIndex;
            this.header = header; 
            this.itemState = itemState;
        } 
 

        ///  
        /// 
        ///     Causes the item do be drawn by the system instead of owner drawn.
        /// 
        public bool DrawDefault { 
            get  {
                return drawDefault; 
            } 
            set {
                drawDefault = value; 
            }
        }

        ///  
        /// 
        ///     Graphics object with which painting should be done. 
        ///  
        public Graphics Graphics
        { 
            get
            {
                return graphics;
            } 
        }
 
 
        /// 
        ///  
        ///     The rectangle outlining the area in which the painting should be done.
        /// 
        public Rectangle Bounds
        { 
            get
            { 
                return bounds; 
            }
        } 

        /// 
        /// 
        ///     The parent item. 
        /// 
        public ListViewItem Item 
        { 
            get
            { 
                return item;
            }
        }	
 
        /// 
        ///  
        ///     The parent item. 
        /// 
        public ListViewItem.ListViewSubItem SubItem 
        {
            get
            {
                return subItem; 
            }
        } 
 
        /// 
        ///  
        ///     The index in the ListView of the parent item.
        /// 
        public int ItemIndex
        { 
            get
            { 
                return itemIndex; 
            }
        } 

        /// 
        /// 
        ///     The column index of this sub-item. 
        /// 
        public int ColumnIndex 
        { 
            get
            { 
                return columnIndex;
            }
        }
 
        /// 
        ///  
        ///    The header of this sub-item's column 
        /// 
        public ColumnHeader Header 
        {
            get
            {
                return header; 
            }
        } 
 
        /// 
        ///  
        ///     Miscellaneous state information pertaining to the parent item.
        /// 
        public ListViewItemStates ItemState
        { 
            get
            { 
                return itemState; 
            }
        } 

        /// 
        /// 
        ///     Draws the sub-item's background. 
        /// 
        public void DrawBackground() 
        { 
            Color backColor = (itemIndex == -1) ? item.BackColor : subItem.BackColor;
            using (Brush backBrush = new SolidBrush(backColor)) { 
                Graphics.FillRectangle(backBrush, bounds);
            }
        }
 
        /// 
        ///  
        ///     Draws a focus rectangle in the given bounds, if the item has focus. 
        /// 
        public void DrawFocusRectangle(Rectangle bounds) 
        {
            if((itemState & ListViewItemStates.Focused) == ListViewItemStates.Focused)
            {
                ControlPaint.DrawFocusRectangle(graphics, Rectangle.Inflate(bounds, -1, -1), item.ForeColor, item.BackColor); 
            }
        } 
 
        /// 
        ///  
        ///     Draws the sub-item's text (overloaded)
        /// 
        public void DrawText()
        { 
            // Map the ColumnHeader::TextAlign to the TextFormatFlags.
            HorizontalAlignment hAlign = header.TextAlign; 
            TextFormatFlags flags = (hAlign == HorizontalAlignment.Left) ? TextFormatFlags.Left : 
                                                   ((hAlign == HorizontalAlignment.Center) ? TextFormatFlags.HorizontalCenter :
                                                   TextFormatFlags.Right); 
            flags |= TextFormatFlags.WordEllipsis;

            DrawText(flags);
        } 

        ///  
        ///  
        ///     Draws the sub-item's text (overloaded) - takes a TextFormatFlags argument.
        ///  
        [
            SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters") // We want to measure the size of blank space.
                                                                                                        // So we don't have to localize it.
        ] 
        public void DrawText(TextFormatFlags flags)
        { 
            string text  = (itemIndex == -1) ? item.Text      : subItem.Text; 
            Font   font  = (itemIndex == -1) ? item.Font      : subItem.Font;
            Color  color = (itemIndex == -1) ? item.ForeColor : subItem.ForeColor; 
            int padding = TextRenderer.MeasureText(" ", font).Width;
            Rectangle newBounds = Rectangle.Inflate(bounds, -padding, 0);

            TextRenderer.DrawText(graphics, text, font, newBounds, color, flags); 
        }
    } 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Windows.Forms 
{ 

    using System.Diagnostics; 
    using System.Diagnostics.CodeAnalysis;
    using System;
    using System.ComponentModel;
    using System.Drawing; 
    using System.Windows.Forms.Internal;
    using Microsoft.Win32; 
    using System.Windows.Forms.VisualStyles; 

    ///  
    /// 
    ///     This class contains the information a user needs to paint ListView sub-items (Details view only).
    /// 
    public class DrawListViewSubItemEventArgs : EventArgs 
    {
 
        private readonly Graphics graphics; 
        private readonly Rectangle bounds;
        private readonly ListViewItem item; 
        private readonly ListViewItem.ListViewSubItem subItem;
        private readonly int itemIndex;
        private readonly int columnIndex;
        private readonly ColumnHeader header; 
        private readonly ListViewItemStates itemState;
        private bool     drawDefault; 
 
        /// 
        ///  
        ///     Creates a new DrawListViewSubItemEventArgs with the given parameters.
        /// 
        public DrawListViewSubItemEventArgs(Graphics graphics, Rectangle bounds, ListViewItem item,
                        ListViewItem.ListViewSubItem subItem, int itemIndex, int columnIndex, 
                        ColumnHeader header, ListViewItemStates itemState)
        { 
            this.graphics = graphics; 
            this.bounds = bounds;
            this.item = item; 
            this.subItem = subItem;
            this.itemIndex = itemIndex;
            this.columnIndex = columnIndex;
            this.header = header; 
            this.itemState = itemState;
        } 
 

        ///  
        /// 
        ///     Causes the item do be drawn by the system instead of owner drawn.
        /// 
        public bool DrawDefault { 
            get  {
                return drawDefault; 
            } 
            set {
                drawDefault = value; 
            }
        }

        ///  
        /// 
        ///     Graphics object with which painting should be done. 
        ///  
        public Graphics Graphics
        { 
            get
            {
                return graphics;
            } 
        }
 
 
        /// 
        ///  
        ///     The rectangle outlining the area in which the painting should be done.
        /// 
        public Rectangle Bounds
        { 
            get
            { 
                return bounds; 
            }
        } 

        /// 
        /// 
        ///     The parent item. 
        /// 
        public ListViewItem Item 
        { 
            get
            { 
                return item;
            }
        }	
 
        /// 
        ///  
        ///     The parent item. 
        /// 
        public ListViewItem.ListViewSubItem SubItem 
        {
            get
            {
                return subItem; 
            }
        } 
 
        /// 
        ///  
        ///     The index in the ListView of the parent item.
        /// 
        public int ItemIndex
        { 
            get
            { 
                return itemIndex; 
            }
        } 

        /// 
        /// 
        ///     The column index of this sub-item. 
        /// 
        public int ColumnIndex 
        { 
            get
            { 
                return columnIndex;
            }
        }
 
        /// 
        ///  
        ///    The header of this sub-item's column 
        /// 
        public ColumnHeader Header 
        {
            get
            {
                return header; 
            }
        } 
 
        /// 
        ///  
        ///     Miscellaneous state information pertaining to the parent item.
        /// 
        public ListViewItemStates ItemState
        { 
            get
            { 
                return itemState; 
            }
        } 

        /// 
        /// 
        ///     Draws the sub-item's background. 
        /// 
        public void DrawBackground() 
        { 
            Color backColor = (itemIndex == -1) ? item.BackColor : subItem.BackColor;
            using (Brush backBrush = new SolidBrush(backColor)) { 
                Graphics.FillRectangle(backBrush, bounds);
            }
        }
 
        /// 
        ///  
        ///     Draws a focus rectangle in the given bounds, if the item has focus. 
        /// 
        public void DrawFocusRectangle(Rectangle bounds) 
        {
            if((itemState & ListViewItemStates.Focused) == ListViewItemStates.Focused)
            {
                ControlPaint.DrawFocusRectangle(graphics, Rectangle.Inflate(bounds, -1, -1), item.ForeColor, item.BackColor); 
            }
        } 
 
        /// 
        ///  
        ///     Draws the sub-item's text (overloaded)
        /// 
        public void DrawText()
        { 
            // Map the ColumnHeader::TextAlign to the TextFormatFlags.
            HorizontalAlignment hAlign = header.TextAlign; 
            TextFormatFlags flags = (hAlign == HorizontalAlignment.Left) ? TextFormatFlags.Left : 
                                                   ((hAlign == HorizontalAlignment.Center) ? TextFormatFlags.HorizontalCenter :
                                                   TextFormatFlags.Right); 
            flags |= TextFormatFlags.WordEllipsis;

            DrawText(flags);
        } 

        ///  
        ///  
        ///     Draws the sub-item's text (overloaded) - takes a TextFormatFlags argument.
        ///  
        [
            SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters") // We want to measure the size of blank space.
                                                                                                        // So we don't have to localize it.
        ] 
        public void DrawText(TextFormatFlags flags)
        { 
            string text  = (itemIndex == -1) ? item.Text      : subItem.Text; 
            Font   font  = (itemIndex == -1) ? item.Font      : subItem.Font;
            Color  color = (itemIndex == -1) ? item.ForeColor : subItem.ForeColor; 
            int padding = TextRenderer.MeasureText(" ", font).Width;
            Rectangle newBounds = Rectangle.Inflate(bounds, -padding, 0);

            TextRenderer.DrawText(graphics, text, font, newBounds, color, flags); 
        }
    } 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK