Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / DrawListViewItemEventArgs.cs / 1 / DrawListViewItemEventArgs.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms {
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms.Internal;
using Microsoft.Win32;
using System.Windows.Forms.VisualStyles;
///
///
/// This class contains the information a user needs to paint ListView items.
///
public class DrawListViewItemEventArgs : EventArgs {
private readonly Graphics graphics;
private readonly ListViewItem item;
private readonly Rectangle bounds;
private readonly int itemIndex;
private readonly ListViewItemStates state;
private bool drawDefault;
///
///
/// Creates a new DrawListViewItemEventArgs with the given parameters.
///
public DrawListViewItemEventArgs(Graphics graphics, ListViewItem item, Rectangle bounds,
int itemIndex, ListViewItemStates state)
{
this.graphics = graphics;
this.item = item;
this.bounds = bounds;
this.itemIndex = itemIndex;
this.state = state;
this.drawDefault = false;
}
///
///
/// Causes the item do be drawn by the system instead of owner drawn.
///
public bool DrawDefault {
get {
return drawDefault;
}
set {
drawDefault = value;
}
}
///
///
/// Graphics object with which painting should be done.
///
public Graphics Graphics
{
get
{
return graphics;
}
}
///
///
/// The item to be painted.
///
public ListViewItem Item
{
get
{
return item;
}
}
///
///
/// The rectangle outlining the area in which the painting should be done.
///
public Rectangle Bounds
{
get
{
return bounds;
}
}
///
///
/// The index of the item that should be painted.
///
public int ItemIndex
{
get
{
return itemIndex;
}
}
///
///
/// Miscellaneous state information.
///
public ListViewItemStates State
{
get
{
return state;
}
}
///
///
/// Draws the item's background.
///
public void DrawBackground()
{
Brush backBrush = new SolidBrush(item.BackColor);
Graphics.FillRectangle(backBrush, bounds);
backBrush.Dispose();
}
///
///
/// Draws a focus rectangle in the given bounds, if the item is focused. In Details View, if FullRowSelect is
/// true, the rectangle is drawn around the whole item, else around the first sub-item's text area.
///
public void DrawFocusRectangle()
{
if ((state & ListViewItemStates.Focused) == ListViewItemStates.Focused) {
Rectangle focusBounds = bounds;
ControlPaint.DrawFocusRectangle(graphics, UpdateBounds(focusBounds, false /*drawText*/), item.ForeColor, item.BackColor);
}
}
///
///
/// Draws the item's text (overloaded) - useful only when View != View.Details
///
public void DrawText()
{
DrawText(TextFormatFlags.Left);
}
///
///
/// Draws the item's text (overloaded) - useful only when View != View.Details - takes a TextFormatFlags argument.
///
public void DrawText(TextFormatFlags flags)
{
TextRenderer.DrawText(graphics, item.Text, item.Font, UpdateBounds(bounds, true /*drawText*/), item.ForeColor, flags);
}
private Rectangle UpdateBounds(Rectangle originalBounds, bool drawText) {
Rectangle resultBounds = originalBounds;
if (item.ListView.View == View.Details) {
// Note: this logic will compute the bounds so they align w/ the system drawn bounds only
// for the default font.
if (!item.ListView.FullRowSelect && item.SubItems.Count > 0) {
ListViewItem.ListViewSubItem subItem = item.SubItems[0];
Size textSize = TextRenderer.MeasureText(subItem.Text, subItem.Font);
resultBounds = new Rectangle(originalBounds.X, originalBounds.Y, textSize.Width, textSize.Height);
// Add some padding so we paint like the system control paints.
resultBounds.X += 4;
resultBounds.Width ++;
}
else
{
resultBounds.X +=4;
resultBounds.Width -= 4;
}
if (drawText) {
resultBounds.X --;
}
}
return resultBounds;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolStripPanel.cs
- ConditionCollection.cs
- TreeNodeCollection.cs
- InvalidPrinterException.cs
- LocalizedNameDescriptionPair.cs
- WebHeaderCollection.cs
- ListManagerBindingsCollection.cs
- PeerCollaborationPermission.cs
- BoundColumn.cs
- CodeRemoveEventStatement.cs
- LinqDataSourceContextData.cs
- XPathNodeIterator.cs
- CompilerError.cs
- sqlmetadatafactory.cs
- SimpleWorkerRequest.cs
- DelegateTypeInfo.cs
- MapPathBasedVirtualPathProvider.cs
- XPathAncestorIterator.cs
- TraceHandler.cs
- NamedObject.cs
- QueueNameHelper.cs
- ProfileSection.cs
- SQLMoney.cs
- MarginsConverter.cs
- PKCS1MaskGenerationMethod.cs
- MarkupWriter.cs
- PrintingPermission.cs
- HtmlToClrEventProxy.cs
- DesignerActionGlyph.cs
- PageCatalogPart.cs
- BitmapSizeOptions.cs
- TransformerInfo.cs
- Context.cs
- PolyLineSegmentFigureLogic.cs
- AccessDataSourceView.cs
- XPathParser.cs
- CallbackBehaviorAttribute.cs
- PathSegment.cs
- TargetPerspective.cs
- LogWriteRestartAreaAsyncResult.cs
- DynamicUpdateCommand.cs
- DataGridAutomationPeer.cs
- Win32Exception.cs
- PathSegmentCollection.cs
- BamlRecords.cs
- EventMappingSettings.cs
- ElapsedEventArgs.cs
- PagesSection.cs
- TextSpan.cs
- SendingRequestEventArgs.cs
- WebBrowserNavigatingEventHandler.cs
- AnonymousIdentificationModule.cs
- DynamicMetaObject.cs
- OrderByQueryOptionExpression.cs
- RC2CryptoServiceProvider.cs
- SoapFaultCodes.cs
- DBSqlParser.cs
- InitializeCorrelation.cs
- OverrideMode.cs
- ReferencedType.cs
- BitmapEffectInput.cs
- InternalEnumValidator.cs
- StylusPoint.cs
- Form.cs
- _emptywebproxy.cs
- ListenerSessionConnectionReader.cs
- WebPartConnectionCollection.cs
- DesignerActionUIStateChangeEventArgs.cs
- EastAsianLunisolarCalendar.cs
- SEHException.cs
- GenericXmlSecurityToken.cs
- PointLightBase.cs
- WinInet.cs
- XmlAttributeCollection.cs
- SQLChars.cs
- IdentityElement.cs
- SystemPens.cs
- DataReaderContainer.cs
- OleDbSchemaGuid.cs
- CompiledQuery.cs
- XPathNodePointer.cs
- IdleTimeoutMonitor.cs
- CodeStatement.cs
- PrimitiveCodeDomSerializer.cs
- TypefaceCollection.cs
- MetadataItemSerializer.cs
- UnknownBitmapEncoder.cs
- UriScheme.cs
- SqlDataSourceWizardForm.cs
- ViewManager.cs
- InputChannelBinder.cs
- EnumValAlphaComparer.cs
- HttpModuleActionCollection.cs
- TemplatedAdorner.cs
- GetPageNumberCompletedEventArgs.cs
- EntityContainerRelationshipSet.cs
- IPAddressCollection.cs
- WmlObjectListAdapter.cs
- XPathNodePointer.cs
- ReadOnlyDictionary.cs