Code:
/ 4.0 / 4.0 / 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.
//------------------------------------------------------------------------------
//
// 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
- Accessible.cs
- dsa.cs
- MultiTouchSystemGestureLogic.cs
- JsonReader.cs
- RoleServiceManager.cs
- ChangeInterceptorAttribute.cs
- Color.cs
- DataGridParentRows.cs
- RemotingServices.cs
- KeyToListMap.cs
- CompilerErrorCollection.cs
- BuildManagerHost.cs
- XmlSiteMapProvider.cs
- PropertyGeneratedEventArgs.cs
- ChannelCacheDefaults.cs
- BitmapSizeOptions.cs
- FontStretchConverter.cs
- ToolStripItemCollection.cs
- EntityContainer.cs
- RectAnimationBase.cs
- SqlBulkCopy.cs
- ListParagraph.cs
- MultiByteCodec.cs
- ExpressionVisitor.cs
- RenamedEventArgs.cs
- CategoryNameCollection.cs
- ManagementOptions.cs
- DataViewListener.cs
- StylusPlugin.cs
- CreateRefExpr.cs
- Byte.cs
- ButtonChrome.cs
- TimeoutException.cs
- dtdvalidator.cs
- XamlToRtfParser.cs
- TableRow.cs
- SqlDependencyListener.cs
- DataServiceHostFactory.cs
- SqlComparer.cs
- Table.cs
- CancellableEnumerable.cs
- OleDbEnumerator.cs
- XmlReflectionImporter.cs
- EmbeddedMailObjectsCollection.cs
- TextEditorSpelling.cs
- XmlSchemaInclude.cs
- invalidudtexception.cs
- Vertex.cs
- SyndicationSerializer.cs
- TextViewSelectionProcessor.cs
- ClientFormsIdentity.cs
- MethodToken.cs
- BufferedWebEventProvider.cs
- MetadataCache.cs
- GACIdentityPermission.cs
- PeerNameRecordCollection.cs
- DesignerCapabilities.cs
- SqlAggregateChecker.cs
- SvcMapFileSerializer.cs
- TextServicesDisplayAttribute.cs
- WindowsTab.cs
- ReachUIElementCollectionSerializer.cs
- HttpWriter.cs
- StringResourceManager.cs
- PropertyConverter.cs
- WS2007HttpBindingElement.cs
- DesignerObject.cs
- MembershipPasswordException.cs
- FormatConvertedBitmap.cs
- HtmlControlAdapter.cs
- _NativeSSPI.cs
- IRCollection.cs
- VisualBasic.cs
- SignatureToken.cs
- IdentifierService.cs
- TextStore.cs
- FileDetails.cs
- Vector3DIndependentAnimationStorage.cs
- HasCopySemanticsAttribute.cs
- WebContext.cs
- XmlComplianceUtil.cs
- VirtualPathUtility.cs
- InternalRelationshipCollection.cs
- OAVariantLib.cs
- TableRow.cs
- ResourcesChangeInfo.cs
- EventArgs.cs
- SystemIPv6InterfaceProperties.cs
- AdornedElementPlaceholder.cs
- ModelPropertyDescriptor.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- Soap12ServerProtocol.cs
- Positioning.cs
- HttpCookiesSection.cs
- ColumnPropertiesGroup.cs
- OleDbFactory.cs
- IIS7UserPrincipal.cs
- SamlAuthorityBinding.cs
- ShaderRenderModeValidation.cs
- CharacterMetrics.cs