DataGridAddNewRow.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

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

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

namespace System.Windows.Forms { 
    using System.Runtime.Remoting; 

    using System.Diagnostics; 

    using System;

    using System.Windows.Forms; 
    using System.ComponentModel;
    using System.Drawing; 
    using Microsoft.Win32; 

    ///  
    ///      This class fully encapsulates the painting logic for an addnew row
    ///      appearing in a DataGrid.
    /// 
    internal class DataGridAddNewRow : DataGridRow { 

        private bool dataBound = false; 
 
        public DataGridAddNewRow(DataGrid dGrid, DataGridTableStyle gridTable, int rowNum)
            : base(dGrid, gridTable, rowNum) { 
        }

        // =-----------------------------------------------------------------
        // =        Methods 
        // =-----------------------------------------------------------------
 
        ///  
        ///      Since the DataView does not return a valid DataRow for
        ///      a newly added row, the DataGrid sets this property to 
        ///      true to signal that the AddNewRow can safely render
        ///      row contents and permit editing, etc because a DataRecord
        ///      exists in the cursor that created this row.
        ///  
        public bool DataBound {
            get { 
                return dataBound; 
            }
            set { 
                dataBound = value;
            }
        }
 
        public override void OnEdit() {
            if (!DataBound) { 
                DataGrid.AddNewRow(); 
            }
        } 

        public override void OnRowLeave() {
            if (DataBound)
                DataBound = false; 
        }
 
        // the addNewRow has nothing to do with losing focus 
        //
        internal override void LoseChildFocus(Rectangle rowHeader, bool alignToRight) 
        {
        }

        // the newDataRow has nothing to do with TAB keys 
        //
        internal override bool ProcessTabKey(Keys keyData, Rectangle rowHeaders, bool alignToRight) 
        { 
            return false;
        } 

        /// 
        ///      Paints the row.
        ///  
        public override int Paint(Graphics g, Rectangle bounds, Rectangle trueRowBounds, int firstVisibleColumn, int columnCount)
        { 
            return Paint(g, bounds, trueRowBounds, firstVisibleColumn, columnCount, false); 
        }
 
        public override int Paint(Graphics g,
                                  Rectangle bounds,
                                  Rectangle trueRowBounds,
                                  int firstVisibleColumn, 
                                  int columnCount,
                                  bool alignToRight) { 
            Rectangle dataBounds = bounds; 
            DataGridLineStyle gridStyle;
            if (this.dgTable.IsDefault) 
                gridStyle = this.DataGrid.GridLineStyle;
            else
                gridStyle = this.dgTable.GridLineStyle;
            int bWidth = this.DataGrid == null ? 0 : gridStyle == DataGridLineStyle.Solid ? 1 : 0; 
            dataBounds.Height -= bWidth;
            int cx = base.PaintData(g, dataBounds, firstVisibleColumn, columnCount, alignToRight); 
 
            if (bWidth > 0)
                PaintBottomBorder(g, bounds, cx, bWidth, alignToRight); 
            return cx;
        }

        protected override void PaintCellContents(Graphics g, Rectangle cellBounds, DataGridColumnStyle column, 
                                                  Brush backBr, Brush foreBrush, bool alignToRight) {
            if (DataBound) { 
                CurrencyManager listManager = DataGrid.ListManager; 
                column.Paint(g, cellBounds, listManager, this.RowNumber, alignToRight);
            } 
            else {
                base.PaintCellContents(g, cellBounds, column, backBr, foreBrush, alignToRight);
            }
        } 
    }
} 

// 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