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
- QueryOptionExpression.cs
- ValueConversionAttribute.cs
- SqlCacheDependencyDatabase.cs
- PriorityBindingExpression.cs
- SpotLight.cs
- DirectoryGroupQuery.cs
- SpellerError.cs
- JobPageOrder.cs
- EpmSyndicationContentSerializer.cs
- FileChangesMonitor.cs
- Stylus.cs
- ObjectDataSource.cs
- XslCompiledTransform.cs
- CaseStatementSlot.cs
- XsltException.cs
- TreeViewAutomationPeer.cs
- LowerCaseStringConverter.cs
- ListViewItem.cs
- HostProtectionException.cs
- FormClosedEvent.cs
- HttpCapabilitiesEvaluator.cs
- MessageLogger.cs
- ImageList.cs
- SoapRpcMethodAttribute.cs
- SolidColorBrush.cs
- XPathScanner.cs
- Grant.cs
- RSAPKCS1KeyExchangeFormatter.cs
- Control.cs
- SafeArrayTypeMismatchException.cs
- NativeMethods.cs
- _LazyAsyncResult.cs
- SimpleWebHandlerParser.cs
- EncoderFallback.cs
- BinHexDecoder.cs
- DataGridHelper.cs
- EdmValidator.cs
- _ShellExpression.cs
- ReferenceEqualityComparer.cs
- MexHttpBindingElement.cs
- DataGridViewImageColumn.cs
- SamlSubjectStatement.cs
- InspectionWorker.cs
- WindowsUpDown.cs
- StreamWriter.cs
- MasterPageCodeDomTreeGenerator.cs
- X509InitiatorCertificateServiceElement.cs
- ResizeGrip.cs
- BamlResourceDeserializer.cs
- Int32Rect.cs
- SspiHelper.cs
- ProtectedProviderSettings.cs
- XslTransform.cs
- PrintPreviewGraphics.cs
- Compress.cs
- GetIndexBinder.cs
- NestedContainer.cs
- SecurityContext.cs
- CustomValidator.cs
- Transform.cs
- TypedReference.cs
- PropertyGrid.cs
- nulltextnavigator.cs
- SimpleRecyclingCache.cs
- StateMachineTimers.cs
- StringFunctions.cs
- KerberosRequestorSecurityToken.cs
- GridViewSelectEventArgs.cs
- QuaternionAnimation.cs
- DbParameterCollection.cs
- sqlinternaltransaction.cs
- RemotingAttributes.cs
- ExecutionContext.cs
- FixedSOMElement.cs
- WebErrorHandler.cs
- ParameterDataSourceExpression.cs
- SmiTypedGetterSetter.cs
- ScrollItemProviderWrapper.cs
- XmlWriterSettings.cs
- PrePrepareMethodAttribute.cs
- OracleFactory.cs
- CategoryGridEntry.cs
- OperationContext.cs
- SQLChars.cs
- MatrixTransform3D.cs
- SelectionItemPattern.cs
- WebPartHelpVerb.cs
- GlobalizationAssembly.cs
- Expander.cs
- InputLanguageManager.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- StrongNameUtility.cs
- TreeNodeMouseHoverEvent.cs
- OpenTypeCommon.cs
- InvalidPropValue.cs
- LinearGradientBrush.cs
- EntityClientCacheKey.cs
- Transform.cs
- CompositeFontParser.cs
- MdbDataFileEditor.cs