- PR -

LISTVIEWのチェックボックスイベント

1
投稿者投稿内容
とら
会議室デビュー日: 2005/03/22
投稿数: 2
投稿日時: 2005-03-22 22:55
Visual C#.Netで開発している初心者です。
LISTVIEWのチェックボックス(複数行)で、チェックは一つだけつくようにしたいのです。
つまり、チェックボックスがONの状態で他のチェックボックスをONにした場合は前のチェックボックスをOFFにしたいのです。参考ソース・URLがございましたらご教授いただけませんか?
よろしくお願いいたします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-03-23 00:53
ItemCheckイベントのハンドラで、既にチェックされていたListViewItemの
チェックをはずせばいいんじゃないですか?
ただし、気をつけないとイベントハンドラがループしちゃうので、チェックをはずした
ときは処理を行わない(チェックを入れたときのみ行う)などの工夫が必要ですね。
とら
会議室デビュー日: 2005/03/22
投稿数: 2
投稿日時: 2005-03-23 10:53
べるさん返答ありがとうございます。
あの、具体的なコードを教えていただけませんでしょうか…?
お手数かけてすみません!
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-03-23 19:53
 実行する手順がわからないのか、手順をどうコード化するかわからないのか、どっち?

 “ある処理を実行中は、この処理を実行しない”という状況は多々あります。特にイベント関係では、付随して発生するイベントがあるために、「ここでこのイベント発生させる要因を作って良いのか」ということを常に考えなければなりません。
 このケースはそういう“よく使うパターン”です。まず、自分で書いてみて、どう悪いのか聞く。そういう聞き方が出来ませんか?

 回答してくれる人は、あなたの状況を知りません。あなたの状況に合うコードは作れないのです。あなたの状況に合うコードを作るのは、あなたの仕事ではないですか?

_________________
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-03-23 23:53
引用:
あの、具体的なコードを教えていただけませんでしょうか…?

私は具体的な設計をしていないし、この処理に定石があるわけじゃないのでコードは
一意に定まるものではありません。先に私が書いたやり方以外にも「処理する瞬間だけ
ハンドラの登録を解除する」という方法も考えられますし。

どこまで理解していて、何がわからないのですか?
どこまでやってみて、どうだめだったのですか?

といいつつコードを書きますが、これがとらさんのためになるとはあまり思いません。
私が試したときは、ItemCheckイベントのハンドラに下記のようなコードを書きました。
コード:
if (e.NewValue == CheckState.Checked && listView2.CheckedItems.Count>0)
{
 listView2.CheckedItems[0].Checked = false;
}

1

スキルアップ/キャリアアップ(JOB@IT)