ListViewの列ヘッダーにソートマークを表示させる

private int markColumn = int.MinValue;
private string[] columnNames;
private string[] sortmarks = new string[] { "△", "▽" };
private int markIndex;

private void listView_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
  if(markColumn == int.MinValue)
  {
    columnNames = new string[listView.Columns.Count];
    for(int i = 0; i < listView.Columns.Count; i++)
    {
      columnNames[i] = listView.Columns[i].Text;
    }

    listView.Columns[e.Column].Text = columnNames[e.Column] + " " + sortmarks[1];
    markColumn = e.Column;
    markIndex = 1;
  }
  else
  {
    if(e.Column == markColumn)
    {
      markIndex++;
      markIndex %= 2;
      listView.Columns[e.Column].Text = columnNames[e.Column] + " " + sortmarks[markIndex];
    }
    else
    {
      listView.Columns[markColumn].Text = columnNames[markColumn];
      listView.Columns[e.Column].Text = columnNames[e.Column] + " " + sortmarks[1];
      markColumn = e.Column;
      markIndex = 1;
    }
  }
  // ソート処理は省略
}