C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: checkedlistboxのチェック変更時のイベント


(過去ログ 168 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■97342 / inTopicNo.1)  checkedlistboxのチェック変更時のイベント
  
□投稿者/ 初# (3回)-(2021/04/27(Tue) 20:25:53)

分類:[C#] 

チェックリストボックスにてチェック状態が変化したときにチェックされている項目をテキストボックスにカンマ区切りで表示したいのですが、調べたところによるとItemCheckイベントではチェックされた時の状態を見てしまうようで変化後の状態を見れないようでした。他にもやり方はあるようですがよくわかりません。なにかいい方法はないでしょうか。ご教示ください。
引用返信 編集キー/
■97343 / inTopicNo.2)  Re[1]: checkedlistboxのチェック変更時のイベント
□投稿者/ WebSurfer (2230回)-(2021/04/27(Tue) 20:46:53)
No97342 (初# さん) に返信

何の話ですか? 回答者・閲覧者はあなたの質問に書いてないことは知る由もないですよ。
引用返信 編集キー/
■97346 / inTopicNo.3)  Re[1]: checkedlistboxのチェック変更時のイベント
□投稿者/ 魔界の仮面弁士 (3090回)-(2021/04/28(Wed) 03:18:25)
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;
}
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -