Extends ListViewItem

   


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

public class Form1 : System.Windows.Forms.Form {
  private System.Windows.Forms.ListView lvCountries;
    private System.Windows.Forms.ImageList imgLarge;
    private System.Windows.Forms.ImageList imgSmall;
    private System.Windows.Forms.ComboBox cbView;
    private System.Windows.Forms.Label lblAbbreviation;
    private System.ComponentModel.IContainer components;

  public Form1() {
    InitializeComponent();
    lvCountries.Items.Add(new CountryItem("United States", "US", "Dollar"));
        lvCountries.Items[0].ImageIndex = 0;
        lvCountries.Items.Add(new CountryItem("Great Britain", "GB", "Pound"));
        lvCountries.Items[1].ImageIndex = 1;
        lvCountries.Items.Add(new CountryItem("Canada", "CA", "Dollar"));
        lvCountries.Items[2].ImageIndex = 2;
        lvCountries.Items.Add(new CountryItem("Japan", "JP", "Yen"));
        lvCountries.Items[3].ImageIndex = 3;
        lvCountries.Items.Add(new CountryItem("Germany", "GM", "Deutch Mark"));
        lvCountries.Items[4].ImageIndex = 4;

        cbView.Items.Add(View.LargeIcon);
        cbView.Items.Add(View.SmallIcon);
        cbView.Items.Add(View.List);
        cbView.Items.Add(View.Details);
        cbView.SelectedIndex = 0;

        lvCountries.Columns.Add("Country",100, HorizontalAlignment.Left);
        lvCountries.Columns.Add("Currency",100, HorizontalAlignment.Left);
    }
    private void InitializeComponent() {
      this.components = new System.ComponentModel.Container();
      this.lvCountries = new System.Windows.Forms.ListView();
      this.imgLarge = new System.Windows.Forms.ImageList(this.components);
      this.imgSmall = new System.Windows.Forms.ImageList(this.components);
      this.cbView = new System.Windows.Forms.ComboBox();
      this.lblAbbreviation = new System.Windows.Forms.Label();
      this.SuspendLayout();

      this.lvCountries.LargeImageList = this.imgLarge;
      this.lvCountries.Location = new System.Drawing.Point(24, 72);
      this.lvCountries.Name = "lvCountries";
      this.lvCountries.Size = new System.Drawing.Size(256, 248);
      this.lvCountries.SmallImageList = this.imgSmall;
      this.lvCountries.TabIndex = 0;
      this.lvCountries.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lvCountries_MouseUp);

      this.imgLarge.ImageSize = new System.Drawing.Size(48, 48);
      this.imgLarge.TransparentColor = System.Drawing.Color.Transparent;

      this.imgSmall.ColorDepth = System.Windows.Forms.ColorDepth.Depth16Bit;
      this.imgSmall.ImageSize = new System.Drawing.Size(16, 16);
      this.imgSmall.TransparentColor = System.Drawing.Color.Transparent;
      // 
      // cbView
      // 
      this.cbView.Location = new System.Drawing.Point(32, 32);
      this.cbView.Name = "cbView";
      this.cbView.Size = new System.Drawing.Size(128, 21);
      this.cbView.TabIndex = 1;
      this.cbView.SelectedIndexChanged += new System.EventHandler(this.cbView_SelectedIndexChanged);
      // 
      // lblAbbreviation
      // 
      this.lblAbbreviation.Location = new System.Drawing.Point(176, 32);
      this.lblAbbreviation.Name = "lblAbbreviation";
      this.lblAbbreviation.Size = new System.Drawing.Size(48, 23);
      this.lblAbbreviation.TabIndex = 2;
      // 
      // Form1
      // 
      this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
      this.ClientSize = new System.Drawing.Size(312, 339);
      this.Controls.Add(this.lblAbbreviation);
      this.Controls.Add(this.cbView);
      this.Controls.Add(this.lvCountries);
      this.Name = "Form1";
      this.Text = "Form1";
      this.ResumeLayout(false);

    }
    static void Main() {
    Application.Run(new Form1());
  }

    private void cbView_SelectedIndexChanged(object sender, System.EventArgs e)
    {
      lvCountries.View = (View)cbView.SelectedItem;
    }

    private void lvCountries_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
      if(lvCountries.View != View.Details)
        lblAbbreviation.Text = ((CountryItem)lvCountries.GetItemAt(e.X, e.Y)).CountryAbbreviation;
      else
        lblAbbreviation.Text = ((CountryItem)lvCountries.GetItemAt(5, e.Y)).CountryAbbreviation;
    }

    
  }
  public class CountryItem : System.Windows.Forms.ListViewItem {
    string countryName = "";
    string countryAbbrev = "";

    public CountryItem(string countryName, string countryAbbreviation, string currency)
    {
      countryName = countryName;
      countryAbbrev = countryAbbreviation;
            base.Text = countryName;
            base.SubItems.Add(currency);
    }

    public string CountryName
    {
      get  {return countryName;}
    }

    public string CountryAbbreviation
    {
      get  {return countryAbbrev;}
    }
  }