Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / WinForms / Managed / System / WinForms / DataGridAddNewRow.cs / 1 / 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. //------------------------------------------------------------------------------ //// 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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SubMenuStyle.cs
- TargetControlTypeAttribute.cs
- listitem.cs
- BinaryFormatterWriter.cs
- WebPartAddingEventArgs.cs
- DateTimeUtil.cs
- AdornerLayer.cs
- HitTestDrawingContextWalker.cs
- UnsafePeerToPeerMethods.cs
- AccessedThroughPropertyAttribute.cs
- DataSourceDescriptorCollection.cs
- FontFamilyIdentifier.cs
- TableItemStyle.cs
- TemplateBuilder.cs
- DataRowView.cs
- XsltInput.cs
- InternalException.cs
- InheritanceContextHelper.cs
- SafeNativeMethods.cs
- ConfigXmlWhitespace.cs
- WeakEventManager.cs
- WindowsPen.cs
- ReplacementText.cs
- ProcessingInstructionAction.cs
- DataServiceProviderWrapper.cs
- BitmapCodecInfo.cs
- XmlHierarchicalDataSourceView.cs
- Metadata.cs
- TextTreeUndo.cs
- BaseCollection.cs
- Rijndael.cs
- ErrorHandlingAcceptor.cs
- HttpClientCertificate.cs
- BindingValueChangedEventArgs.cs
- XmlQueryType.cs
- BindingFormattingDialog.cs
- RangeValidator.cs
- UnicodeEncoding.cs
- SqlDataSourceRefreshSchemaForm.cs
- GlobalizationAssembly.cs
- ClrProviderManifest.cs
- ItemCollection.cs
- TrustSection.cs
- RangeValuePattern.cs
- HttpHeaderCollection.cs
- CqlQuery.cs
- EditorAttribute.cs
- DataBindEngine.cs
- WorkflowDataContext.cs
- TextEndOfSegment.cs
- HttpServerVarsCollection.cs
- HostedBindingBehavior.cs
- WebPartsPersonalization.cs
- IDReferencePropertyAttribute.cs
- FileLogRecordHeader.cs
- RegexEditorDialog.cs
- UnmanagedMemoryStream.cs
- DesignBindingConverter.cs
- NetworkAddressChange.cs
- arabicshape.cs
- EditorReuseAttribute.cs
- SystemUdpStatistics.cs
- CombinedGeometry.cs
- AngleUtil.cs
- DocumentViewer.cs
- ConditionalAttribute.cs
- ManipulationStartedEventArgs.cs
- ActivityInstanceMap.cs
- ProgressBar.cs
- AdornerLayer.cs
- ComplexPropertyEntry.cs
- BitmapMetadataBlob.cs
- RectangleGeometry.cs
- RegisterInfo.cs
- MaskedTextBoxDesignerActionList.cs
- FixedNode.cs
- ResourceIDHelper.cs
- GenericParameterDataContract.cs
- BindingNavigator.cs
- CharacterMetrics.cs
- DataSourceXmlSerializationAttribute.cs
- DocobjHost.cs
- Frame.cs
- MyContact.cs
- TableChangeProcessor.cs
- WindowHideOrCloseTracker.cs
- Section.cs
- BackgroundWorker.cs
- IdentifierCollection.cs
- FixedFindEngine.cs
- ThreadInterruptedException.cs
- BaseDataList.cs
- Animatable.cs
- MaskedTextProvider.cs
- AutomationPeer.cs
- SqlInternalConnectionSmi.cs
- IItemContainerGenerator.cs
- FrameDimension.cs
- XPathNodePointer.cs
- ClusterRegistryConfigurationProvider.cs