ArcObjects Library Reference  

SelCountDockWin

About the Custom selection extension Sample

[C#]

SelCountDockWin.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Framework;

namespace SelectionSample
{
  public partial class SelCountDockWin : UserControl
  {
    private static System.Windows.Forms.ListView s_listView;
    private static Label s_label;

    private static bool s_enabled;

    public SelCountDockWin(object hook)
    {
      InitializeComponent();
      this.Hook = hook;
      
      s_listView = listView1;
      s_label = label1;
      listView1.View = View.Details;
    }

    internal static bool Exists
    {
      get
      {
        return (s_listView == null) ? false : true;
      }
    }

    internal static void Clear()
    {
      if (s_listView != null) 
        s_listView.Items.Clear();
    }

    internal static void AddItem(string layerName, int selectionCount)
    {
      if (s_listView == null)
        return;

      ListViewItem item = new ListViewItem(layerName);
      item.SubItems.Add(selectionCount.ToString());
      s_listView.Items.Add(item);
    }

    internal static void SetEnabled(bool enabled)
    {
      s_enabled = enabled;

      // if the dockable window was never displayed, listview could be null
      if (s_listView == null)
        return;

      if (enabled)
      {
        s_label.Visible = false;
        s_listView.Visible = true;
      }
      else
      {
        Clear();
        s_label.Visible = true;
        s_listView.Visible = false;
      }
    }

    /// <summary>
    /// Host object of the dockable window
    /// </summary>
    private object Hook
    {
      get;
      set;
    }

    /// <summary>
    /// Implementation class of the dockable window add-in. It is responsible for 
    /// creating and disposing the user interface class of the dockable window.
    /// </summary>
    public class AddinImpl : ESRI.ArcGIS.Desktop.AddIns.DockableWindow
    {
      private SelCountDockWin m_windowUI;

      public AddinImpl()
      {
      }

      protected override IntPtr OnCreateChild()
      {
        m_windowUI = new SelCountDockWin(this.Hook);
        return m_windowUI.Handle;
      }

      protected override void Dispose(bool disposing)
      {
        if (m_windowUI != null)
          m_windowUI.Dispose(disposing);

        base.Dispose(disposing);
      }

    }
  }
}

[Visual Basic .NET]

SelCountDockWin.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports ESRI.ArcGIS.Framework

Namespace SelectionSample
  Partial Public Class SelCountDockWin
    Inherits UserControl
    Private Shared s_listView As System.Windows.Forms.ListView
    Private Shared s_label As Label

    Private Shared s_enabled As Boolean

    Public Sub New(ByVal hook As Object)
      InitializeComponent()
      Me.Hook = hook

      s_listView = listView1
      s_label = label1
      listView1.View = View.Details
    End Sub

    Friend Shared ReadOnly Property Exists() As Boolean
      Get
        Return If((s_listView Is Nothing), False, True)
      End Get
    End Property

    Friend Shared Sub Clear()
      If s_listView IsNot Nothing Then
        s_listView.Items.Clear()
      End If
    End Sub

    Friend Shared Sub AddItem(ByVal layerName As String, ByVal selectionCount As Integer)
      If s_listView Is Nothing Then
        Return
      End If

      Dim item As New ListViewItem(layerName)
      item.SubItems.Add(selectionCount.ToString())
      s_listView.Items.Add(item)
    End Sub

    Friend Shared Sub SetEnabled(ByVal enabled As Boolean)
      s_enabled = enabled

      ' if the dockable window was never displayed, listview could be null
      If s_listView Is Nothing Then
        Return
      End If

      If enabled Then
        s_label.Visible = False
        s_listView.Visible = True
      Else
        Clear()
        s_label.Visible = True
        s_listView.Visible = False
      End If
    End Sub

    ''' <summary>
    ''' Host object of the dockable window
    ''' </summary>
    Private privateHook As Object
    Private Property Hook() As Object
      Get
        Return privateHook
      End Get
      Set(ByVal value As Object)
        privateHook = value
      End Set
    End Property

    ''' <summary>
    ''' Implementation class of the dockable window add-in. It is responsible for 
    ''' creating and disposing the user interface class of the dockable window.
    ''' </summary>
    Public Class AddinImpl
      Inherits ESRI.ArcGIS.Desktop.AddIns.DockableWindow
      Private m_windowUI As SelCountDockWin

      Public Sub New()
      End Sub

      Protected Overrides Function OnCreateChild() As IntPtr
        m_windowUI = New SelCountDockWin(Me.Hook)
        Return m_windowUI.Handle
      End Function

      Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If m_windowUI IsNot Nothing Then
          m_windowUI.Dispose(disposing)
        End If

        MyBase.Dispose(disposing)
      End Sub

    End Class
  End Class
End Namespace