我有一個問題,我無法解決。 我正在編寫一個應用程序,它可以幫助您輕鬆更改系統代理。它有一個listView與一些項目。這些項目有複選框。中,只有一個項目可以同時檢查應用需求 邏輯,所以我下面的代碼,以確保它工作得很好:C#。複選框變得沒有選中
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的將被選中,除了最後中使用時。 我知道這是因爲listView1_ItemChecked(),但我不知道如何以其他方式解決它。 你能幫我找到一個解決辦法:如何取消所有其他複選框,或找到一個解決方法來檢查正確的項目?
這沒有多大意義。您已經知道如何取消訂閱ItemChecked事件,以便可以在GetProxyFromRegistry中工作。但首先要創建一個更直觀的用戶界面。 – 2012-03-21 00:53:46
用戶界面不能更直觀。我不知道如何在特定時刻取消訂閱此事件(方法)。你可以請舉個例子嗎? – artman 2012-03-21 00:59:02
它在你自己的代碼!您的ItemChecked事件處理程序的第一行。 – 2012-03-21 01:02:11