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
- QueryTask.cs
- HostProtectionException.cs
- ScriptResourceInfo.cs
- CheckPair.cs
- CompilationSection.cs
- PropertyPathConverter.cs
- RenderingEventArgs.cs
- ContainerControl.cs
- KeyNotFoundException.cs
- SafeMILHandleMemoryPressure.cs
- MultipleViewProviderWrapper.cs
- DNS.cs
- FrameDimension.cs
- CacheOutputQuery.cs
- FloatSumAggregationOperator.cs
- Int32Storage.cs
- Library.cs
- PrtTicket_Base.cs
- UnsafeNativeMethods.cs
- WebControlsSection.cs
- DelegatingConfigHost.cs
- Form.cs
- UnsafeNativeMethods.cs
- UserControlAutomationPeer.cs
- CodeParameterDeclarationExpressionCollection.cs
- ArraySet.cs
- DataRowView.cs
- FamilyTypeface.cs
- PackWebResponse.cs
- StringKeyFrameCollection.cs
- TrackingServices.cs
- AdditionalEntityFunctions.cs
- DataViewListener.cs
- Dictionary.cs
- PublishLicense.cs
- CustomAttribute.cs
- DataGridHeaderBorder.cs
- Misc.cs
- AdornerPresentationContext.cs
- Transform.cs
- XmlSerializerVersionAttribute.cs
- MatrixTransform3D.cs
- XmlValidatingReaderImpl.cs
- AuthenticateEventArgs.cs
- WebDisplayNameAttribute.cs
- PageSetupDialog.cs
- WsatConfiguration.cs
- NetSectionGroup.cs
- ListenUriMode.cs
- RowVisual.cs
- EasingFunctionBase.cs
- DesignerCalendarAdapter.cs
- DataGridViewCellCancelEventArgs.cs
- ViewCellSlot.cs
- OracleParameterCollection.cs
- UIPropertyMetadata.cs
- XmlExtensionFunction.cs
- MenuStrip.cs
- StringDictionaryCodeDomSerializer.cs
- WsatAdminException.cs
- LogicalExpressionTypeConverter.cs
- XmlNavigatorStack.cs
- DbDataSourceEnumerator.cs
- DecimalAnimationUsingKeyFrames.cs
- MonthCalendarDesigner.cs
- _LocalDataStoreMgr.cs
- Repeater.cs
- AQNBuilder.cs
- VSWCFServiceContractGenerator.cs
- OutputChannelBinder.cs
- InstanceContext.cs
- DataServiceClientException.cs
- OdbcParameter.cs
- AssemblyBuilderData.cs
- MsmqDiagnostics.cs
- SettingsAttributes.cs
- FormViewInsertedEventArgs.cs
- SpotLight.cs
- FreezableCollection.cs
- NativeMethods.cs
- WebPartConnectVerb.cs
- FrameworkTemplate.cs
- ButtonFieldBase.cs
- GiveFeedbackEvent.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- TypefaceMetricsCache.cs
- TextDecorationUnitValidation.cs
- TimelineGroup.cs
- StatusBarPanel.cs
- ButtonBaseAdapter.cs
- WebServiceTypeData.cs
- DbConnectionPoolGroupProviderInfo.cs
- HttpServerUtilityWrapper.cs
- ResumeStoryboard.cs
- VersionedStream.cs
- SmiMetaData.cs
- PageClientProxyGenerator.cs
- SessionEndingEventArgs.cs
- DictionaryTraceRecord.cs
- AliasExpr.cs