2015-04-18 3 views
2
private void Form1_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     if (clearHistoryOnQuitToolStripMenuItem.Checked) 
     { 
      System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 255"); 
     } 

    } 

Я не получаю никаких ошибок, но программа все еще выполняет действие внутри, если заявление, даже если деталь снята.Проверьте, чтобы увидеть, если ToolStripMenuItem проверяются

ответ

0

Нет проблем с тем, что вы сделали с выполнением инструкции if, поэтому должна быть проблема с чем-то внешним, что вы предоставили выше.

  • ли MenuItem проверил или неопределенными (оба возвращают верно, когда Checked опрашивается)
  • ли MenuItem фактически переключая (настройки неправильно собственности и т.д.)

Просто убедитесь, что состояние Checked перед вводом заявления if, прежде чем идти дальше ... Вы может найти ваш ответ прямо тогда и там.

Попробуйте следующее и посмотрите, что будет записываться в консоль при запуске.

private void Form1_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     Console.WriteLine(clearHistoryOnQuitToolStripMenuItem.CheckState.ToString()); 
     if (clearHistoryOnQuitToolStripMenuItem.Checked) 
     { 
      System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 255"); 
     } 

    } 

удачи & по крайней мере, здесь вы сможете выяснить, почему Checked состояние всегда возвращает истину (или это!) ...

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