У меня есть проблема, которую я не могу решить.Я пишу приложение, которое поможет легко изменить системный прокси.У него есть listView с некоторыми элементами.Эти пункты имеют флажки.Логика приложения требует, чтобы за один раз можно было проверить только один элемент, поэтому у меня есть следующий код, чтобы убедиться, что он работает хорошо:
private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e)
{
listView1.ItemChecked -= listView1_ItemChecked;
foreach(ListViewItem item in listView1.Items)
{
if(item != e.Item)
{
item.Checked = false;
}
}
listView1.ItemChecked += listView1_ItemChecked;
}
Кроме того, мое приложение должно при запуске проверить некоторые значения в реестре исравните его текст с моими элементами в listView.Я делаю это так:
private void GetProxyFromRegistry()
{
RegistryKey SystemProxy = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings");
try
{
string UsedProxy = SystemProxy.GetValue("ProxyServer").ToString();
foreach (ListViewItem item in listView1.Items)
{
if (UsedProxy == item.Text + ":" + item.SubItems[1].Text)
{
item.Checked = true;
}
else
{
item.Checked = false;
}
}
}
catch (Exception exc)
{
MessageBox.Show(exc.Message);
}
}
Проблема в том, что ни один из listView1.Items не будет проверен, за исключением last один при использовании.Я знаю, что это из-за listView1_ItemChecked (), но я не знаю, как решить ее другим способом.Можете ли вы помочь мне найти решение, как снять все остальные флажки или найти обходной путь для проверки правильности элемента?