Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / ListViewInsertionMark.cs / 1 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UIntPtr.cs
- M3DUtil.cs
- SecurityTokenTypes.cs
- XmlReflectionImporter.cs
- _NegoStream.cs
- UnsafeNativeMethods.cs
- DocumentViewerBase.cs
- CodeConstructor.cs
- RegistryPermission.cs
- Documentation.cs
- PackUriHelper.cs
- TextFindEngine.cs
- StateItem.cs
- DataQuery.cs
- HyperLink.cs
- WebExceptionStatus.cs
- Scheduling.cs
- METAHEADER.cs
- DictationGrammar.cs
- SettingsAttributes.cs
- EntitySetDataBindingList.cs
- CheckBox.cs
- WorkflowIdleElement.cs
- DateTimeConstantAttribute.cs
- HttpEncoder.cs
- DtdParser.cs
- OverflowException.cs
- MonitoringDescriptionAttribute.cs
- SectionVisual.cs
- TypeHelpers.cs
- MemoryFailPoint.cs
- RowUpdatingEventArgs.cs
- LineServicesRun.cs
- SqlCommandSet.cs
- BatchWriter.cs
- KnownColorTable.cs
- HebrewCalendar.cs
- InlineObject.cs
- DataRow.cs
- SortExpressionBuilder.cs
- AttachmentService.cs
- WebReferencesBuildProvider.cs
- NumericUpDown.cs
- AggregationMinMaxHelpers.cs
- WindowsFormsHostAutomationPeer.cs
- XPathDocumentNavigator.cs
- CustomAttribute.cs
- CharAnimationBase.cs
- ExceptionTrace.cs
- CodeArgumentReferenceExpression.cs
- EntityClassGenerator.cs
- HttpModuleAction.cs
- HttpFileCollection.cs
- ReservationNotFoundException.cs
- EntityDataSourceColumn.cs
- COM2IPerPropertyBrowsingHandler.cs
- XmlILStorageConverter.cs
- HandoffBehavior.cs
- LabelLiteral.cs
- HtmlTable.cs
- GradientStop.cs
- CustomError.cs
- WS2007HttpBinding.cs
- RepeatButtonAutomationPeer.cs
- DBCommandBuilder.cs
- remotingproxy.cs
- CompositeDispatchFormatter.cs
- RSAOAEPKeyExchangeFormatter.cs
- SemanticBasicElement.cs
- RecognitionResult.cs
- RelationshipType.cs
- sqlinternaltransaction.cs
- GenericPrincipal.cs
- ReadOnlyKeyedCollection.cs
- DisplayNameAttribute.cs
- FlowDocumentScrollViewer.cs
- ISAPIRuntime.cs
- HelpKeywordAttribute.cs
- StorageEndPropertyMapping.cs
- DataGridViewToolTip.cs
- TreeNodeBindingCollection.cs
- ResourceProperty.cs
- SetterBase.cs
- PropertyManager.cs
- AutoResetEvent.cs
- IIS7UserPrincipal.cs
- Attachment.cs
- FeatureSupport.cs
- PrintDocument.cs
- StatusBarItemAutomationPeer.cs
- JapaneseCalendar.cs
- TransactionFormatter.cs
- HostingEnvironment.cs
- ConfigPathUtility.cs
- LinkTarget.cs
- ValueTypeFixupInfo.cs
- RegexWriter.cs
- SystemUnicastIPAddressInformation.cs
- SessionEndingCancelEventArgs.cs
- BuildProviderCollection.cs