Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- GPRECT.cs
- CodeCatchClause.cs
- EmptyCollection.cs
- Mouse.cs
- XmlNamedNodeMap.cs
- ReadWriteControlDesigner.cs
- TextCollapsingProperties.cs
- ToolboxItemAttribute.cs
- QuestionEventArgs.cs
- BreadCrumbTextConverter.cs
- XmlUrlEditor.cs
- RegionData.cs
- MimeReturn.cs
- ZeroOpNode.cs
- Preprocessor.cs
- TargetConverter.cs
- _NegoStream.cs
- TextTreeRootNode.cs
- Int32.cs
- WindowsHyperlink.cs
- DropSource.cs
- ArrayWithOffset.cs
- GlobalProxySelection.cs
- HtmlInputRadioButton.cs
- Inflater.cs
- DefaultClaimSet.cs
- WebPartCatalogCloseVerb.cs
- ProviderConnectionPoint.cs
- XmlSchemaChoice.cs
- Models.cs
- FormViewCommandEventArgs.cs
- OfTypeExpression.cs
- GatewayDefinition.cs
- FigureHelper.cs
- CompilerErrorCollection.cs
- EntityObject.cs
- SqlServer2KCompatibilityAnnotation.cs
- ComponentEditorForm.cs
- NamespaceExpr.cs
- PropertyConverter.cs
- LayoutUtils.cs
- PropertyValue.cs
- AuthenticationService.cs
- sitestring.cs
- DBSchemaTable.cs
- ScrollableControl.cs
- XamlStackWriter.cs
- __TransparentProxy.cs
- XmlSignificantWhitespace.cs
- sqlmetadatafactory.cs
- VisualCollection.cs
- EventRoute.cs
- MarkupCompiler.cs
- TemplateBuilder.cs
- ClassicBorderDecorator.cs
- ReflectionPermission.cs
- ForceCopyBuildProvider.cs
- LinearGradientBrush.cs
- RoleService.cs
- ToolStripItemRenderEventArgs.cs
- SqlClientPermission.cs
- Quaternion.cs
- HttpProfileBase.cs
- SafeIUnknown.cs
- DetailsViewDesigner.cs
- WebServiceParameterData.cs
- Identity.cs
- UrlAuthorizationModule.cs
- RuntimeConfig.cs
- complextypematerializer.cs
- LinqDataSourceSelectEventArgs.cs
- ComEventsHelper.cs
- ConsumerConnectionPointCollection.cs
- ManagementObject.cs
- DataDocumentXPathNavigator.cs
- MorphHelpers.cs
- CompositeFontFamily.cs
- StandardBindingElementCollection.cs
- ProxyWebPartManager.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- UnitControl.cs
- XmlSchemaAny.cs
- XPathMessageFilterElementComparer.cs
- Formatter.cs
- GAC.cs
- CaseStatementProjectedSlot.cs
- FrameworkElement.cs
- CreateUserErrorEventArgs.cs
- DefaultTextStoreTextComposition.cs
- DefinitionBase.cs
- GetWinFXPath.cs
- SemanticAnalyzer.cs
- PersonalizationStateQuery.cs
- OleDbException.cs
- BaseContextMenu.cs
- KeyPressEvent.cs
- CodeMemberProperty.cs
- input.cs
- Substitution.cs
- XMLSyntaxException.cs