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
- ScriptingWebServicesSectionGroup.cs
- SerializationFieldInfo.cs
- SystemIcmpV6Statistics.cs
- FillBehavior.cs
- _OverlappedAsyncResult.cs
- RemoteWebConfigurationHostServer.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- ButtonRenderer.cs
- DataGridViewCellCollection.cs
- WebEncodingValidator.cs
- SizeValueSerializer.cs
- MappingMetadataHelper.cs
- StandardToolWindows.cs
- RewritingSimplifier.cs
- RawKeyboardInputReport.cs
- Compilation.cs
- EncryptedXml.cs
- TrackingMemoryStreamFactory.cs
- ArraySubsetEnumerator.cs
- SynchronizedDispatch.cs
- EnvironmentPermission.cs
- ReadOnlyDataSourceView.cs
- ReadOnlyNameValueCollection.cs
- WindowsPrincipal.cs
- BamlStream.cs
- GlyphingCache.cs
- EventLogPermissionEntry.cs
- EmptyStringExpandableObjectConverter.cs
- FontClient.cs
- XamlFigureLengthSerializer.cs
- HtmlInputPassword.cs
- CaretElement.cs
- EntityDataSourceWizardForm.cs
- HttpProcessUtility.cs
- Attributes.cs
- documentsequencetextcontainer.cs
- ServicePointManager.cs
- ElementNotEnabledException.cs
- RichTextBoxConstants.cs
- ToolStripContainer.cs
- CatalogPartChrome.cs
- EventTask.cs
- StrokeFIndices.cs
- ObjectPropertyMapping.cs
- SoapElementAttribute.cs
- ServicesUtilities.cs
- MouseActionConverter.cs
- XmlNodeChangedEventArgs.cs
- MarginCollapsingState.cs
- _FixedSizeReader.cs
- EventSinkActivity.cs
- DeferredTextReference.cs
- httpapplicationstate.cs
- JournalEntryStack.cs
- DrawListViewItemEventArgs.cs
- BroadcastEventHelper.cs
- AssemblyAttributesGoHere.cs
- ClockController.cs
- CapabilitiesState.cs
- SafeFileMapViewHandle.cs
- SymmetricKeyWrap.cs
- TableAutomationPeer.cs
- UntypedNullExpression.cs
- NegationPusher.cs
- DocumentGridContextMenu.cs
- Thumb.cs
- FileSecurity.cs
- HelpEvent.cs
- PingReply.cs
- XmlSerializerNamespaces.cs
- DataView.cs
- WindowsTitleBar.cs
- PlaceHolder.cs
- Process.cs
- StateItem.cs
- CommonProperties.cs
- ReturnType.cs
- WebCategoryAttribute.cs
- PlainXmlSerializer.cs
- Classification.cs
- BasicCellRelation.cs
- TripleDESCryptoServiceProvider.cs
- CopyCodeAction.cs
- XPathArrayIterator.cs
- InstalledFontCollection.cs
- recordstate.cs
- BuildProvider.cs
- Label.cs
- XmlWrappingReader.cs
- UserPersonalizationStateInfo.cs
- HttpResponseInternalWrapper.cs
- StringAttributeCollection.cs
- ConnectionConsumerAttribute.cs
- SourceItem.cs
- TypedCompletedAsyncResult.cs
- TreeNodeCollection.cs
- BackStopAuthenticationModule.cs
- ProfileGroupSettingsCollection.cs
- Material.cs
- TypeElement.cs