2013-06-29 2 views
0

есть в любом случае, чтобы установить условие, такое как:C# комплект состояние на ContextMenuStrip

, когда я открыть файл, он загружает некоторые Infos на в ListView, пятый подпункт (должно быть 4 на кол-индекс) загружается текст , если это «СОВТ», включить пункт в ContextMenuStrip, если нет, то вывести его из строя, я попытался это внутри ContextMenuStrip, но он просто дал мне Exeption:

if (listView1.SelectedItems[4].ToString() != "ETDF") 
     { 
      editToolStripMenuItem.Enabled = false; 
     } 
     else if (listView1.SelectedItems[4].ToString() == "ETDF") 
     { 
      editToolStripMenuItem.Enabled = true; 
     } 

я делаю что-то не так?

ответ

1

Установить Enabled недвижимость в пределах Opening события.

private void MyContextMenuStrip_Opening(object sender, CancelEventArgs e) 
{ 
    editToolStripMenuItem.Enabled = (listView1.SelectedItems[4].ToString() == "ETDF"); 
} 
+0

еще же исключение (ArgumentOutOfRangeException), и я делал это раньше. – Omarrrio

+0

Имеет ли 'listView1.SelectedItems' на самом деле 5 значений? 'ArgumentOutOfRangeException' кажется, что ваша проблема связана с доступом к несуществующему индексу в' SelectedItems'. – keyboardP

+2

Тип исключения не был в вашем исходном вопросе ... –

1

Вы получили исключение ArgumentOutOfRangeException. Если да, проверьте счет.

 if (listView1.Items.Count >= 5) 
     { 
      if (listView1.SelectedItems[4].ToString() != "ETDF") 
      { 
       editToolStripMenuItem.Enabled = false; 
      } 
      else if (listView1.SelectedItems[4].ToString() == "ETDF") 
      { 
       editToolStripMenuItem.Enabled = true; 
      } 
     } 
+0

спасибо, ваше решение вроде только исправляет исключение, но на самом деле не может назвать его ответом, извините. – Omarrrio

1
if (listView1.SelectedItems[4].Text != "ETDF") 
     { 
      editToolStripMenuItem.Enabled = false; 
     } 
     else if (listView1.SelectedItems[4].Text == "ETDF") 
     { 
      editToolStripMenuItem.Enabled = true; 
     } 

это должно решить вашу проблему, ошибка была на вызове ToString(), когда должен быть текст

+0

это действительно помогло мне найти истинный ответ, спасибо, Я не могу опубликовать ответ сам, король нашел его раньше, вот он: (король поставит его так, чтобы я мог отметить как ответ) 'if (listView1.SelectedItems.Count == 1) editToolStripMenuItem.Enabled = listView1.SelectedItems [0] .SubItems [4] .Text == "ETDF"; ' – Omarrrio

Смежные вопросы