title: Why is the variable counter 0 all the time?
body: <p>In the User Control code im doing in the top:</p>
  
  <pre><code>int counter;
  </code></pre>
  
  <p>In constructor:</p>
  
  <pre><code>counter = 0;
  </code></pre>
  
  <p>In the MouseDown event im doing:</p>
  
  <pre><code>private void listBox1_MouseDown(object sender, MouseEventArgs e)
          {
              int index = listBox1.IndexFromPoint(e.X, e.Y);
  
              if (e.Button == System.Windows.Forms.MouseButtons.Right)
              {
                  if (m_itemIndexes.Contains(index))
                      return;
  
                  m_itemIndexes.Add(index);
                  DrawItem(index);
                  counter += 1;
              }
  </code></pre>
  
  <p>I used a breakpoint on the counter += 1; and saw that it's growing by one each time i click the right mouse button.</p>
  
  <p>Then i add in the bottom a property for the counter:</p>
  
  <pre><code>[Browsable(true)]
          public int RedCounts
          {
              get { return counter; }
              set
              {
                  counter = value;
                  Refresh();
              }
          }
  </code></pre>
  
  <p>Then in Form1 in the top i did:</p>
  
  <pre><code>ListBoxControl lb1;
  </code></pre>
  
  <p>In constructor:</p>
  
  <pre><code>lb1 = new ListBoxControl();
  </code></pre>
  
  <p>Then in the bottom of Form1 i added:</p>
  
  <pre><code>private void deleteSelectedLightningsToolStripMenuItem_Click(object sender, EventArgs e)
              {
                  if (MessageBox.Show("Are you Sure you want to delete " + lb1.RedCounts + " the selected files ? Click Yes to Confirm and No to continue", "WinForm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                  {
  
                  }
                  else
                  {
  
                  }
              }
  </code></pre>
  
  <p>But the result of RedCounts is all the time 0 i don't know why.</p>
  
  <p>EDIT:</p>
  
  <p>I found that if im doing instead of counter = 0; doing counter = 1; and instead of counter += 1; doing RedCounts += 1; Then using a breakpoint on the RedCounts i see that counter is growing by 1 starting from 1. 1,2,3,4....</p>
  
  <p>The problem for some reason is in Form1 when i click the deleteSelectedLightningsToolStripMenuItem_Click using a breakpoint then lb1.RedCounts is 1 for some reason it's getting the value of 1 maybe from the property or from the line counter = 1; im not sure why. So if i set counter = 121; then lb1.RedCounts will show me 121. Strange.</p>
  
  <p>This is the the full User Control with the counter and RedCounts:</p>
  
  <pre><code>/*----------------------------------------------------------------
   * Module Name  : ListBoxControl
   * Description  : Change listBox items color
   * Author       : Danny
   * Date         : 30/12/2012
   * Revision     : 1.00
   * --------------------------------------------------------------*/
  
  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Drawing;
  using System.Data;
  using System.Linq;
  using System.Text;
  using System.Windows.Forms;
  
  /*
   *  Introduction :
   * 
   *  By default the color is red.
   *  Added a property to change the color.
   *  Right mouse click on item to change item color.
   *  Left mouse click on item to change the item color back.
   *  If the listBox is empty the control will be filled with 10 "Test" items.
   * */
  
  namespace Lightnings_Extractor // to check how and change the namespace to listBoxControl
  {
      public partial class ListBoxControl : UserControl
      {
          private Color m_MyListColor;
          private List&lt;int&gt; m_itemIndexes = new List&lt;int&gt;();
          private List&lt;int&gt; m_coloringItemIndexes = new List&lt;int&gt;();
          private int counter;
          public event EventHandler&lt;ItemEventArgs&gt; ItemRemoved;
  
          public List&lt;int&gt; Indices
          {
              get { return m_itemIndexes; }
          }
  
          public ListBoxControl()
          {
              InitializeComponent();
  
              counter = 1;
              if (listBox1.Items.Count == 0)
              {
                  for (int i = 0; i &lt; 10; i++)
                  {
                      listBox1.Items.Add("Test " + i);
                  }
              }
          }
  
          private void listBox1_MouseDown(object sender, MouseEventArgs e)
          {
              int index = listBox1.IndexFromPoint(e.X, e.Y);
  
              if (e.Button == System.Windows.Forms.MouseButtons.Right)
              {
                  if (m_itemIndexes.Contains(index))
                      return;
  
                  m_itemIndexes.Add(index);
                  DrawItem(index);
                  RedCounts += 1;
              }
              else if (e.Button == MouseButtons.Left)
              {
                  if (!m_itemIndexes.Contains(index))
                      return;
  
                  m_itemIndexes.Remove(index);
                  DrawItem(index);
                  OnItemRemoved(index, listBox1.Items[index].ToString());
              }  
              listBox1.SelectedIndex = index;
          }
  
          protected virtual void OnItemRemoved(int indx, string name)
          {
              EventHandler&lt;ItemEventArgs&gt; handler = ItemRemoved;
  
              if(handler != null)
                  ItemRemoved(this, new ItemEventArgs() {  Index = indx, Name = name});
          }
  
          private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
          {
              m_MyListColor = MyListColor;
              if (m_MyListColor.IsEmpty == true)
              {
                  m_MyListColor = Color.Red;
              }
  
              bool selected = (e.State &amp; DrawItemState.Selected) == DrawItemState.Selected;
  
              if (m_itemIndexes.Contains(e.Index))
              {
                  using (var brush = new SolidBrush(m_MyListColor))
                  {
                      e.Graphics.FillRectangle(brush, e.Bounds);
                  }
              }
              else
              {
                  e.DrawBackground();
              }
  
              string item = listBox1.Items[e.Index].ToString();
              e.Graphics.DrawString(item, e.Font, selected || m_itemIndexes.Contains(e.Index) ? Brushes.White : Brushes.Black, e.Bounds, StringFormat.GenericDefault);
  
              if (selected)
                  e.DrawFocusRectangle();
          }
  
          private void DrawItem(int index)
          {
              Rectangle rectItem = listBox1.GetItemRectangle(index);
              listBox1.Invalidate(rectItem);
          }
  
          [Browsable(true)]
          public Color MyListColor
          {
              get { return m_MyListColor; }
              set
              {
                  m_MyListColor = value;
                  Refresh();
              }
          }
  
          [Browsable(true)]
          public ListBox MyListBox
          {
              get { return listBox1; }
              set
              {
                  listBox1 = value;
                  Refresh();
              }
          }
  
          [Browsable(true)]
          public int RedCounts
          {
              get { return counter; }
              set
              {
                  counter = value;
                  Refresh();
              }
          }
  
          private void ListBoxControl_Load(object sender, EventArgs e)
          {
              this.listBox1.SelectedIndex = 0;
          }
      }
  
      public class ItemEventArgs : EventArgs
      {
          public int Index { get; set; }
          public string Name { get; set; }
      }
  }
  </code></pre>