title: ListViewItem check by user, not by program
body: <p>I have a <code>ListView</code> with various items and a <code>ItemCheck</code> handler as below:</p>
  
  <pre><code>private void ListView1_ItemCheck(object sender, ItemCheckEventArgs e)
      {
         if (e.NewValue == System.Windows.Forms.CheckState.Checked)
          {
              if (e.Index == 0)
              {
                  ListView1.Items[1].Checked = false;
                  ListView1.Items[2].Checked = false;
                  ListView1.Items[3].Checked = false;
                  ListView1.Items[4].Checked = false;
                  ListView1.Items[5].Checked = false;
                  ListView1.Items[6].Checked = false;
                  ListView1.Items[7].Checked = false;
              }
              else
              {
                  ListView1.Items[0].Checked = false;
              }
          }
      }
  </code></pre>
  
  <p>Essentially the first item is "none", so when it is checked all the other items become unchecked (and vice-versa). Occasionally the program checks items in the code and I think this is causing problems. I know <code>TreeViewEventArgs</code> has a field called <code>Action</code> which is equal to <code>TreeViewAction.Unkown</code>if the call is coming from the program and not from the user. </p>
  
  <p>Is there a way to check if a <code>ListViewItem</code> is being checked by a user as opposed to being checked by code?</p>