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
- StandardTransformFactory.cs
- StorageMappingFragment.cs
- ValidationError.cs
- Point3DAnimation.cs
- QilVisitor.cs
- WebPageTraceListener.cs
- ToolStripSeparatorRenderEventArgs.cs
- UnitySerializationHolder.cs
- ParserStreamGeometryContext.cs
- OutputScopeManager.cs
- EmptyQuery.cs
- SimpleTypeResolver.cs
- DataSysAttribute.cs
- WmlLiteralTextAdapter.cs
- SubMenuStyleCollection.cs
- XamlTreeBuilderBamlRecordWriter.cs
- StylusSystemGestureEventArgs.cs
- BuildProviderCollection.cs
- Contracts.cs
- StronglyTypedResourceBuilder.cs
- EntityContainer.cs
- BindingMAnagerBase.cs
- SingleObjectCollection.cs
- RunWorkerCompletedEventArgs.cs
- GridItemPatternIdentifiers.cs
- BamlLocalizationDictionary.cs
- _ContextAwareResult.cs
- Compiler.cs
- CellIdBoolean.cs
- ObjectTypeMapping.cs
- DrawingContextDrawingContextWalker.cs
- XmlDataSourceDesigner.cs
- PropertyStore.cs
- Comparer.cs
- CharEnumerator.cs
- AsymmetricKeyExchangeDeformatter.cs
- HttpRuntime.cs
- GridViewCellAutomationPeer.cs
- XmlCDATASection.cs
- DesignTimeValidationFeature.cs
- LinkArea.cs
- basevalidator.cs
- WebResourceAttribute.cs
- RenderData.cs
- XmlTextReaderImplHelpers.cs
- WebServiceEnumData.cs
- Message.cs
- AppModelKnownContentFactory.cs
- CompositeDuplexBindingElementImporter.cs
- storepermissionattribute.cs
- __Filters.cs
- HebrewCalendar.cs
- _SslStream.cs
- UpdatePanelControlTrigger.cs
- AnnotationAdorner.cs
- BroadcastEventHelper.cs
- AutomationPropertyInfo.cs
- Directory.cs
- StatusBar.cs
- InsufficientExecutionStackException.cs
- FormatConvertedBitmap.cs
- ParsedAttributeCollection.cs
- Thread.cs
- KnownColorTable.cs
- MissingFieldException.cs
- _SecureChannel.cs
- RSAOAEPKeyExchangeDeformatter.cs
- Classification.cs
- WorkflowDefinitionDispenser.cs
- CalloutQueueItem.cs
- XhtmlBasicCalendarAdapter.cs
- ProfessionalColors.cs
- CodeGen.cs
- ServiceSecurityAuditElement.cs
- precedingquery.cs
- Double.cs
- TextTreeFixupNode.cs
- EntityConnectionStringBuilder.cs
- ToolStripDropDownButton.cs
- ExtendedProperty.cs
- SimpleBitVector32.cs
- MarkupExtensionSerializer.cs
- DateRangeEvent.cs
- LoginName.cs
- ModelItemCollectionImpl.cs
- TransportContext.cs
- DataGridViewCellParsingEventArgs.cs
- XmlILStorageConverter.cs
- Polyline.cs
- IteratorFilter.cs
- DeviceSpecificChoiceCollection.cs
- SecureStringHasher.cs
- COM2EnumConverter.cs
- TabPanel.cs
- FixedSOMTableRow.cs
- XmlSchemaProviderAttribute.cs
- XmlExpressionDumper.cs
- Grammar.cs
- LocalBuilder.cs
- SetMemberBinder.cs