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
- AttachedPropertyDescriptor.cs
- PropertyInformationCollection.cs
- ViewCellSlot.cs
- CacheAxisQuery.cs
- UnionCodeGroup.cs
- ToolStripRendererSwitcher.cs
- OracleParameterBinding.cs
- PersistenceTypeAttribute.cs
- TextPointer.cs
- UnicastIPAddressInformationCollection.cs
- InvokePatternIdentifiers.cs
- AdPostCacheSubstitution.cs
- EditorOptionAttribute.cs
- TemplateControl.cs
- _BaseOverlappedAsyncResult.cs
- ApplicationId.cs
- PackagePartCollection.cs
- WindowsAltTab.cs
- Sorting.cs
- CreateDataSourceDialog.cs
- KeyValueConfigurationCollection.cs
- SafeFindHandle.cs
- InsufficientMemoryException.cs
- DataGridLinkButton.cs
- ReaderWriterLock.cs
- UICuesEvent.cs
- MemberDomainMap.cs
- SctClaimSerializer.cs
- TemplateColumn.cs
- DataRowView.cs
- _DigestClient.cs
- RootBrowserWindow.cs
- SyntaxCheck.cs
- RectangleGeometry.cs
- IIS7UserPrincipal.cs
- ProcessThreadCollection.cs
- MetadataSection.cs
- StyleTypedPropertyAttribute.cs
- CustomAssemblyResolver.cs
- EntryWrittenEventArgs.cs
- ScrollableControlDesigner.cs
- ListViewCancelEventArgs.cs
- BatchParser.cs
- CrossSiteScriptingValidation.cs
- WebControlAdapter.cs
- ObjectStateEntry.cs
- PathGradientBrush.cs
- HeaderedContentControl.cs
- PersianCalendar.cs
- EmptyControlCollection.cs
- Publisher.cs
- OracleDataAdapter.cs
- CalendarSelectionChangedEventArgs.cs
- VirtualizingPanel.cs
- RegularExpressionValidator.cs
- XmlILIndex.cs
- RegisteredArrayDeclaration.cs
- XmlSchemaException.cs
- InheritablePropertyChangeInfo.cs
- Types.cs
- sqlser.cs
- BitConverter.cs
- StrongNamePublicKeyBlob.cs
- CacheForPrimitiveTypes.cs
- SemaphoreSlim.cs
- IntegerValidatorAttribute.cs
- DocComment.cs
- WinInet.cs
- EntityDataReader.cs
- DataGridColumnHeader.cs
- FormViewDeleteEventArgs.cs
- CellIdBoolean.cs
- SmtpCommands.cs
- ResourceContainer.cs
- GridViewUpdateEventArgs.cs
- TextElementEditingBehaviorAttribute.cs
- FileIOPermission.cs
- XmlTypeAttribute.cs
- Hashtable.cs
- FlowDocumentPaginator.cs
- FlowDocumentReaderAutomationPeer.cs
- XmlSchemaImporter.cs
- BasicViewGenerator.cs
- TaiwanCalendar.cs
- NativeMsmqMessage.cs
- CryptoHandle.cs
- SslStream.cs
- HttpProcessUtility.cs
- DataGridItemAttachedStorage.cs
- ImportStoreException.cs
- Column.cs
- TimeSpanStorage.cs
- TextModifier.cs
- SafeLibraryHandle.cs
- Utility.cs
- XmlSchemaObjectTable.cs
- ScriptControlManager.cs
- ResourcesGenerator.cs
- SmiContextFactory.cs
- CalculatedColumn.cs