DataGridViewButtonColumn.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / DataGridViewButtonColumn.cs / 1 / DataGridViewButtonColumn.cs

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

namespace System.Windows.Forms 
{ 
    using System;
    using System.Text; 
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Globalization; 
    using System.Diagnostics.CodeAnalysis;
 
    ///  
    [ToolboxBitmapAttribute(typeof(DataGridViewButtonColumn), "DataGridViewButtonColumn.bmp")]
    public class DataGridViewButtonColumn : DataGridViewColumn 
    {
        private static Type columnType = typeof(DataGridViewButtonColumn);

        private string text; 

        ///  
        [ 
            SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors") // Can't think of a workaround.
        ] 
        public DataGridViewButtonColumn()
            : base(new DataGridViewButtonCell())
        {
            DataGridViewCellStyle defaultCellStyle = new DataGridViewCellStyle(); 
            defaultCellStyle.AlignmentInternal = DataGridViewContentAlignment.MiddleCenter;
            this.DefaultCellStyle = defaultCellStyle; 
        } 

        ///  
        [
            Browsable(false),
            DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ] 
        public override DataGridViewCell CellTemplate
        { 
            get 
            {
                return base.CellTemplate; 
            }
            set
            {
                if (value != null && !(value is System.Windows.Forms.DataGridViewButtonCell)) 
                {
                    throw new InvalidCastException(SR.GetString(SR.DataGridViewTypeColumn_WrongCellTemplateType, "System.Windows.Forms.DataGridViewButtonCell")); 
                } 
                base.CellTemplate = value;
            } 
        }

        /// 
        [ 
            Browsable(true),
            SRCategory(SR.CatAppearance), 
            SRDescription(SR.DataGridView_ColumnDefaultCellStyleDescr) 
        ]
        public override DataGridViewCellStyle DefaultCellStyle 
        {
            get
            {
                return base.DefaultCellStyle; 
            }
            set 
            { 
                base.DefaultCellStyle = value;
            } 
        }

        /// 
        [ 
            DefaultValue(FlatStyle.Standard),
            SRCategory(SR.CatAppearance), 
            SRDescription(SR.DataGridView_ButtonColumnFlatStyleDescr) 
        ]
        public FlatStyle FlatStyle 
        {
            get
            {
                if (this.CellTemplate == null) 
                {
                    throw new InvalidOperationException(SR.GetString(SR.DataGridViewColumn_CellTemplateRequired)); 
                } 
                return ((DataGridViewButtonCell) this.CellTemplate).FlatStyle;
            } 
            set
            {
                if (this.FlatStyle != value)
                { 
                    ((DataGridViewButtonCell)this.CellTemplate).FlatStyle = value;
                    if (this.DataGridView != null) 
                    { 
                        DataGridViewRowCollection dataGridViewRows = this.DataGridView.Rows;
                        int rowCount = dataGridViewRows.Count; 
                        for (int rowIndex = 0; rowIndex < rowCount; rowIndex++)
                        {
                            DataGridViewRow dataGridViewRow = dataGridViewRows.SharedRow(rowIndex);
                            DataGridViewButtonCell dataGridViewCell = dataGridViewRow.Cells[this.Index] as DataGridViewButtonCell; 
                            if (dataGridViewCell != null)
                            { 
                                dataGridViewCell.FlatStyleInternal = value; 
                            }
                        } 
                        this.DataGridView.OnColumnCommonChange(this.Index);
                    }
                }
            } 
        }
 
        ///  
        [
            DefaultValue(null), 
            SRCategory(SR.CatAppearance),
            SRDescription(SR.DataGridView_ButtonColumnTextDescr)
        ]
        public string Text 
        {
            get 
            { 
                return this.text;
            } 
            set
            {
                if (!string.Equals(value, this.text, StringComparison.Ordinal))
                { 
                    this.text = value;
                    if (this.DataGridView != null) 
                    { 
                        if (this.UseColumnTextForButtonValue)
                        { 
                            this.DataGridView.OnColumnCommonChange(this.Index);
                        }
                        else
                        { 
                            DataGridViewRowCollection dataGridViewRows = this.DataGridView.Rows;
                            int rowCount = dataGridViewRows.Count; 
                            for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) 
                            {
                                DataGridViewRow dataGridViewRow = dataGridViewRows.SharedRow(rowIndex); 
                                DataGridViewButtonCell dataGridViewCell = dataGridViewRow.Cells[this.Index] as DataGridViewButtonCell;
                                if (dataGridViewCell != null && dataGridViewCell.UseColumnTextForButtonValue)
                                {
                                    this.DataGridView.OnColumnCommonChange(this.Index); 
                                    return;
                                } 
                            } 
                            this.DataGridView.InvalidateColumn(this.Index);
                        } 
                    }
                }
            }
        } 

        ///  
        [ 
            DefaultValue(false),
            SRCategory(SR.CatAppearance), 
            SRDescription(SR.DataGridView_ButtonColumnUseColumnTextForButtonValueDescr)
        ]
        public bool UseColumnTextForButtonValue
        { 
            get
            { 
                if (this.CellTemplate == null) 
                {
                    throw new InvalidOperationException(SR.GetString(SR.DataGridViewColumn_CellTemplateRequired)); 
                }
                return ((DataGridViewButtonCell)this.CellTemplate).UseColumnTextForButtonValue;
            }
            set 
            {
                if (this.UseColumnTextForButtonValue != value) 
                { 
                    ((DataGridViewButtonCell)this.CellTemplate).UseColumnTextForButtonValueInternal = value;
                    if (this.DataGridView != null) 
                    {
                        DataGridViewRowCollection dataGridViewRows = this.DataGridView.Rows;
                        int rowCount = dataGridViewRows.Count;
                        for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) 
                        {
                            DataGridViewRow dataGridViewRow = dataGridViewRows.SharedRow(rowIndex); 
                            DataGridViewButtonCell dataGridViewCell = dataGridViewRow.Cells[this.Index] as DataGridViewButtonCell; 
                            if (dataGridViewCell != null)
                            { 
                                dataGridViewCell.UseColumnTextForButtonValueInternal = value;
                            }
                        }
                        this.DataGridView.OnColumnCommonChange(this.Index); 
                    }
                } 
            } 
        }
 
        /// 
        public override object Clone()
        {
            DataGridViewButtonColumn dataGridViewColumn; 
            Type thisType = this.GetType();
 
            if (thisType == columnType) //performance improvement 
            {
                dataGridViewColumn = new DataGridViewButtonColumn(); 
            }
            else
            {
                // SECREVIEW : Late-binding does not represent a security thread, see bug#411899 for more info.. 
                //
                dataGridViewColumn = (DataGridViewButtonColumn) System.Activator.CreateInstance(thisType); 
            } 
            if (dataGridViewColumn != null)
            { 
                base.CloneInternal(dataGridViewColumn);
                dataGridViewColumn.Text = this.text;
            }
            return dataGridViewColumn; 
        }
 
        private bool ShouldSerializeDefaultCellStyle() 
        {
            if (!this.HasDefaultCellStyle) 
            {
                return false;
            }
 
            DataGridViewCellStyle defaultCellStyle = this.DefaultCellStyle;
 
            return (!defaultCellStyle.BackColor.IsEmpty || 
                    !defaultCellStyle.ForeColor.IsEmpty ||
                    !defaultCellStyle.SelectionBackColor.IsEmpty || 
                    !defaultCellStyle.SelectionForeColor.IsEmpty ||
                    defaultCellStyle.Font != null ||
                    !defaultCellStyle.IsNullValueDefault ||
                    !defaultCellStyle.IsDataSourceNullValueDefault || 
                    !String.IsNullOrEmpty(defaultCellStyle.Format) ||
                    !defaultCellStyle.FormatProvider.Equals(System.Globalization.CultureInfo.CurrentCulture) || 
                    defaultCellStyle.Alignment != DataGridViewContentAlignment.MiddleCenter || 
                    defaultCellStyle.WrapMode != DataGridViewTriState.NotSet ||
                    defaultCellStyle.Tag !=  null || 
                    !defaultCellStyle.Padding.Equals(Padding.Empty));
        }

        ///  
        public override string ToString()
        { 
            StringBuilder sb = new StringBuilder(64); 
            sb.Append("DataGridViewButtonColumn { Name=");
            sb.Append(this.Name); 
            sb.Append(", Index=");
            sb.Append(this.Index.ToString(CultureInfo.CurrentCulture));
            sb.Append(" }");
            return sb.ToString(); 
        }
    } 
} 

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


                        

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