|
■No97342 (初# さん) に返信 > チェックリストボックスにてチェック状態が変化したときにチェックされている項目をテキストボックスにカンマ区切りで表示したいのですが、 > 調べたところによるとItemCheckイベントではチェックされた時の状態を見てしまうようで
ItemCheck イベントの、イベント引数 e を参照してみてください。 e.Index は、操作された項目の番号を示します。
そして、e.CurrentValue と e.NewValue を調べれば、 Unchecked → Checked にチェックされたのか、それとも Checked → Unchecked にチェック解除されたのかを調べられます。
また、checkedListBox1.CheckedItems は、ItemCheck イベントが終わった後で反映されますので、 遅延処理のため、CheckedItems 終了後のアイドル時に CheckedItems を読み取るという方法もあります。
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) { var idle = default(EventHandler); idle = delegate { Application.Idle -= idle; textBox1.Text = string.Join(",", checkedListBox1.CheckedItems.OfType<object>().Select(s => s.ToString()).ToArray()); }; Application.Idle += idle; }
|