私は解決できない問題があります。 私はシステムプロキシを簡単に変更するのに役立つアプリケーションを書いています。それはいくつかの項目を持つ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;
}
また、私のアプリケーションがそれにレジストリにいくつかの値をチェックする必要が開始と比較していますリストビュー内のアイテムを持つテキストです。 私はそのようにそれをやっている:
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のいずれも使用最後 1以外にチェックされませんということです。 私はそれがlistView1_ItemChecked()のためだと知っていますが、私はそれを他の方法で解決する方法がわかりません。 他のチェックボックスをすべてオフにする方法や、正しい項目を確認するための回避策を見つける方法を教えてください。
これはあまり意味がありません。 GetProxyFromRegistryでも機能するように、ItemCheckedイベントの購読を解除する方法はすでに知っています。しかしより直観的なユーザーインターフェイスを作成してください。 –
ユーザーインターフェイスを直観的にすることはできませんでした。私は特定の瞬間(方法)のためにこのイベントをどのように退会させるのか分かりません。私に例を挙げてください。 – artman
あなた自身のコードです! ItemCheckedイベントハンドラの最初の行。 –