Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- ListBindingHelper.cs
- UrlMappingsModule.cs
- SmtpTransport.cs
- BaseServiceProvider.cs
- LZCodec.cs
- FloaterParagraph.cs
- ArithmeticException.cs
- HtmlControlPersistable.cs
- CounterCreationData.cs
- ClonableStack.cs
- Decimal.cs
- TextEditorTyping.cs
- CompiledXpathExpr.cs
- QueryReaderSettings.cs
- BindingNavigator.cs
- BookmarkUndoUnit.cs
- UpdateException.cs
- ContentPlaceHolder.cs
- XmlCountingReader.cs
- BookmarkList.cs
- FormatConvertedBitmap.cs
- KeysConverter.cs
- PerspectiveCamera.cs
- UpDownBase.cs
- CatalogPartCollection.cs
- SeparatorAutomationPeer.cs
- TriggerAction.cs
- SafeSystemMetrics.cs
- StorageAssociationTypeMapping.cs
- LinqDataView.cs
- UrlPath.cs
- HotSpot.cs
- SqlResolver.cs
- NativeWindow.cs
- AutomationElementCollection.cs
- DisposableCollectionWrapper.cs
- ElementMarkupObject.cs
- mediaclock.cs
- SymmetricSecurityProtocolFactory.cs
- DataFieldConverter.cs
- WindowsToolbar.cs
- GatewayDefinition.cs
- BaseCollection.cs
- StorageScalarPropertyMapping.cs
- ListView.cs
- UInt64Converter.cs
- FixUpCollection.cs
- DnsEndPoint.cs
- FieldTemplateFactory.cs
- ClientRequest.cs
- IListConverters.cs
- CodeTypeMember.cs
- CommandID.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- EngineSite.cs
- SystemWebSectionGroup.cs
- IgnoreFlushAndCloseStream.cs
- XmlDataLoader.cs
- WindowsListViewSubItem.cs
- MultitargetUtil.cs
- Dictionary.cs
- SecurityKeyIdentifierClause.cs
- cookiecontainer.cs
- View.cs
- DataControlButton.cs
- DataColumnMappingCollection.cs
- WebUtil.cs
- UIAgentAsyncEndRequest.cs
- OdbcConnectionHandle.cs
- SqlDataSourceSelectingEventArgs.cs
- GeneralTransform3D.cs
- EndOfStreamException.cs
- AsnEncodedData.cs
- TreeNodeCollection.cs
- EdmType.cs
- D3DImage.cs
- SByte.cs
- OdbcCommandBuilder.cs
- DataRowCollection.cs
- SHA1.cs
- DbProviderFactoriesConfigurationHandler.cs
- CompressedStack.cs
- XPathBuilder.cs
- PromptBuilder.cs
- Int64Animation.cs
- MatrixAnimationUsingKeyFrames.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- ListViewDeleteEventArgs.cs
- StateMachineWorkflowInstance.cs
- ScrollEventArgs.cs
- Accessible.cs
- SharedUtils.cs
- IgnoreSection.cs
- Highlights.cs
- PersonalizationStateInfo.cs
- RotationValidation.cs
- _Semaphore.cs
- MetaData.cs
- MethodToken.cs
- AppLevelCompilationSectionCache.cs