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
- PublishLicense.cs
- CalendarData.cs
- LinkedResource.cs
- XmlQueryStaticData.cs
- SingleAnimation.cs
- TaskFormBase.cs
- DataSourceDesigner.cs
- HtmlInputReset.cs
- DataGridRowHeaderAutomationPeer.cs
- ClientScriptManagerWrapper.cs
- SecurityElement.cs
- LongValidatorAttribute.cs
- CatalogPartChrome.cs
- XmlText.cs
- WeakEventManager.cs
- ComponentConverter.cs
- TextTreeTextNode.cs
- RegistryKey.cs
- X509SecurityTokenAuthenticator.cs
- RuleSetReference.cs
- SoapExtensionStream.cs
- ConsumerConnectionPoint.cs
- TextRunCache.cs
- HandledEventArgs.cs
- EventItfInfo.cs
- SingleAnimationUsingKeyFrames.cs
- UInt64.cs
- TextEffect.cs
- AdornerLayer.cs
- ManualResetEventSlim.cs
- XPathNodeHelper.cs
- HttpListenerRequest.cs
- ZipIOCentralDirectoryBlock.cs
- PerspectiveCamera.cs
- Positioning.cs
- TrustManager.cs
- SizeIndependentAnimationStorage.cs
- MobileControlDesigner.cs
- AccessDataSource.cs
- WebConfigurationFileMap.cs
- WebConfigurationManager.cs
- CollectionViewGroupInternal.cs
- CryptoHandle.cs
- InputLanguageProfileNotifySink.cs
- ConstraintManager.cs
- OleDbSchemaGuid.cs
- SQLConvert.cs
- Vector3DKeyFrameCollection.cs
- CodeExporter.cs
- File.cs
- XmlNamespaceMapping.cs
- ConnectionInterfaceCollection.cs
- EntityProviderFactory.cs
- WebUtil.cs
- SiteMapDesignerDataSourceView.cs
- RequestCachePolicy.cs
- Decoder.cs
- DataReaderContainer.cs
- X509RawDataKeyIdentifierClause.cs
- SoapHeader.cs
- ExpressionBindingCollection.cs
- DBNull.cs
- ProcessModelSection.cs
- ResXResourceReader.cs
- ConfigurationCollectionAttribute.cs
- XmlDocument.cs
- Logging.cs
- MergeExecutor.cs
- columnmapkeybuilder.cs
- GroupStyle.cs
- WebServiceResponse.cs
- VerificationException.cs
- SchemaNotation.cs
- GridPattern.cs
- TypeKeyValue.cs
- KeyConstraint.cs
- httpstaticobjectscollection.cs
- WebEvents.cs
- smtppermission.cs
- OperatingSystemVersionCheck.cs
- DefaultSection.cs
- XmlSignatureManifest.cs
- XslCompiledTransform.cs
- CopyNodeSetAction.cs
- Calendar.cs
- OSFeature.cs
- ProxyWebPart.cs
- CompilerGeneratedAttribute.cs
- ServiceObjectContainer.cs
- recordstate.cs
- UniqueIdentifierService.cs
- Site.cs
- ResponseBodyWriter.cs
- ScriptRef.cs
- TableRow.cs
- Inflater.cs
- WrappedReader.cs
- PasswordTextContainer.cs
- InstallerTypeAttribute.cs
- _TransmitFileOverlappedAsyncResult.cs