Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / WinForms / Managed / System / WinForms / ListViewInsertionMark.cs / 1305376 / ListViewInsertionMark.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System.Drawing;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace System.Windows.Forms {
///
///
///
/// Encapsulates insertion-mark information
///
///
public sealed class ListViewInsertionMark
{
private ListView listView;
private int index = 0;
private Color color = Color.Empty;
private bool appearsAfterItem = false;
internal ListViewInsertionMark(ListView listView) {
this.listView = listView;
}
///
///
/// Specifies whether the insertion mark appears
/// after the item - otherwise it appears
/// before the item (the default).
///
///
public bool AppearsAfterItem {
get
{
return appearsAfterItem;
}
set
{
if (appearsAfterItem != value) {
appearsAfterItem = value;
if (listView.IsHandleCreated) {
UpdateListView();
}
}
}
}
///
///
/// Returns bounds of the insertion-mark.
///
///
public Rectangle Bounds {
get
{
NativeMethods.RECT rect = new NativeMethods.RECT();
listView.SendMessage(NativeMethods.LVM_GETINSERTMARKRECT, 0, ref rect);
return Rectangle.FromLTRB(rect.left, rect.top, rect.right, rect.bottom);
}
}
///
///
/// The color of the insertion-mark.
///
///
public Color Color {
get
{
if (color.IsEmpty) {
color = SafeNativeMethods.ColorFromCOLORREF((int)listView.SendMessage(NativeMethods.LVM_GETINSERTMARKCOLOR, 0, 0));
}
return color;
}
set
{
if (color != value) {
color = value;
if (listView.IsHandleCreated) {
listView.SendMessage(NativeMethods.LVM_SETINSERTMARKCOLOR, 0, SafeNativeMethods.ColorToCOLORREF(color));
}
}
}
}
///
///
/// Item next to which the insertion-mark appears.
///
///
public int Index {
get
{
return index;
}
set
{
if (index != value) {
index = value;
if (listView.IsHandleCreated) {
UpdateListView();
}
}
}
}
///
///
/// Performs a hit-test at the specified insertion point
/// and returns the closest item.
///
///
public int NearestIndex(Point pt)
{
NativeMethods.POINT point = new NativeMethods.POINT();
point.x = pt.X;
point.y = pt.Y;
NativeMethods.LVINSERTMARK lvInsertMark = new NativeMethods.LVINSERTMARK();
UnsafeNativeMethods.SendMessage(new HandleRef(listView, listView.Handle), NativeMethods.LVM_INSERTMARKHITTEST, point, lvInsertMark);
return lvInsertMark.iItem;
}
internal void UpdateListView() {
Debug.Assert(listView.IsHandleCreated, "ApplySavedState Precondition: List-view handle must be created");
NativeMethods.LVINSERTMARK lvInsertMark = new NativeMethods.LVINSERTMARK();
lvInsertMark.dwFlags = appearsAfterItem ? NativeMethods.LVIM_AFTER : 0;
lvInsertMark.iItem = index;
UnsafeNativeMethods.SendMessage(new HandleRef(listView, listView.Handle), NativeMethods.LVM_SETINSERTMARK, 0, lvInsertMark);
if (!color.IsEmpty) {
listView.SendMessage(NativeMethods.LVM_SETINSERTMARKCOLOR, 0, SafeNativeMethods.ColorToCOLORREF(color));
}
}
}
}
// 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
- Math.cs
- Random.cs
- BuildProviderAppliesToAttribute.cs
- WebPartConnectionsCancelVerb.cs
- XPathAncestorIterator.cs
- CompositeControl.cs
- DelimitedListTraceListener.cs
- MsmqInputSessionChannelListener.cs
- Nodes.cs
- METAHEADER.cs
- Pick.cs
- smtppermission.cs
- MonitorWrapper.cs
- HttpStreams.cs
- ISAPIRuntime.cs
- ObjectKeyFrameCollection.cs
- ModifyActivitiesPropertyDescriptor.cs
- XmlEntityReference.cs
- FormatterServices.cs
- XamlSerializerUtil.cs
- ExceptionHelpers.cs
- EntityProviderServices.cs
- NodeCounter.cs
- ImageBrush.cs
- Fault.cs
- FixedSOMLineCollection.cs
- LabelDesigner.cs
- PeerPresenceInfo.cs
- DeobfuscatingStream.cs
- SmtpAuthenticationManager.cs
- Polygon.cs
- ConfigPathUtility.cs
- _Events.cs
- MgmtResManager.cs
- WizardPanel.cs
- RTLAwareMessageBox.cs
- CompoundFileIOPermission.cs
- CheckBoxField.cs
- MaterializeFromAtom.cs
- WebAdminConfigurationHelper.cs
- WorkflowDebuggerSteppingAttribute.cs
- FixedFindEngine.cs
- ColorKeyFrameCollection.cs
- AllMembershipCondition.cs
- EntityTypeEmitter.cs
- IdentityModelStringsVersion1.cs
- EntityDataSourceContainerNameItem.cs
- SignedXmlDebugLog.cs
- DomNameTable.cs
- CleanUpVirtualizedItemEventArgs.cs
- ReflectionHelper.cs
- ApplicationDirectory.cs
- ObjectDataSource.cs
- WebEvents.cs
- InvalidPipelineStoreException.cs
- XamlHostingConfiguration.cs
- TemplateColumn.cs
- EmptyImpersonationContext.cs
- EventLogPermissionEntry.cs
- Gdiplus.cs
- SessionIDManager.cs
- XPathDocumentNavigator.cs
- SourceItem.cs
- NamespaceListProperty.cs
- SerializationFieldInfo.cs
- EntityDesignerDataSourceView.cs
- BitmapSizeOptions.cs
- PointCollectionValueSerializer.cs
- DataServiceProcessingPipelineEventArgs.cs
- FontEmbeddingManager.cs
- XPathDocument.cs
- ActivityXRefConverter.cs
- TokenBasedSet.cs
- DataViewSettingCollection.cs
- BaseCodeDomTreeGenerator.cs
- RowSpanVector.cs
- BindingContext.cs
- BinHexDecoder.cs
- ModuleConfigurationInfo.cs
- Statements.cs
- VisualBrush.cs
- X509AsymmetricSecurityKey.cs
- StructuredTypeInfo.cs
- DeviceContext.cs
- TreeSet.cs
- XPathException.cs
- ComponentEvent.cs
- CodeStatement.cs
- RegistryPermission.cs
- Hash.cs
- Function.cs
- ProtocolsConfigurationHandler.cs
- Privilege.cs
- Wow64ConfigurationLoader.cs
- basecomparevalidator.cs
- ListCollectionView.cs
- StatusBarItemAutomationPeer.cs
- UnionExpr.cs
- FrameworkReadOnlyPropertyMetadata.cs
- OleDbConnectionFactory.cs