- PR -

CheckedListBoxでCheckされた値を取得する方法?

1
投稿者投稿内容
サクさん
会議室デビュー日: 2003/08/07
投稿数: 6
投稿日時: 2003-10-15 21:05
VB.netです。
ValueMemberに値を持っていて、SelectedValueでその値を取得したいのですが
最後にCheckされたものの値しか取得できません。
Checkされた全ての値はどうやったら取得できるのでしょうか?
for i = 0 to CheckedLidtBox.CheckedItem.Count -1
ってな感じでFor文でぐるぐる回しても、無理でした。
見当はずれなことをやってるのかもしれませんが・・・
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-16 08:58
リファレンスにはこんなサンプルが書いてましたよ。

For i = 0 To checkboxlist1.Items.Count - 1
 If checkboxlist1.Items(i).Selected Then
  Message.Text = Message.Text & checkboxlist1.Items(i).Text & "<br>"
 End If
Next
xkimura
会議室デビュー日: 2002/12/18
投稿数: 11
お住まい・勤務地: 新潟県
投稿日時: 2003-10-16 09:51
こんな感じでも取得できますよ。
(この方法は選択された行のインデックスを取得できます)

-----------------------------------------------------------
Dim i As Integer = 0
For Each i In Me.checkboxlist1.CheckedIndices
MessageBox.Show(Me.checkboxlist1.Items.Item(i))
Next
-----------------------------------------------------------
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-16 11:31
Webフォームではなく、Winフォームのほうですね。クラス名を読み間違えました。
私のは忘れてください。
サクさん
会議室デビュー日: 2003/08/07
投稿数: 6
投稿日時: 2003-10-16 22:16
ぴでさん、xkimuraさんありがとうございます。

説明不足ですみません。
checkedlistboxにはデータベースから名前と番号をdisplaymemberとvaluememberに
持たせてあります。
Indexでは0から始まる値しか取得できないですよね?
tagに番号を持たせる方法もやってみたのですが、
うまくいきませんでした・・・
名前はCheckedItem.itemとかで取得できるのですが、
番号が・・・
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-17 00:56
先ほどはWebフォームと勘違いしてすいませんでした。
やりたいことはこんな感じでしょうか?
C#ですが、CheckedItemsコレクションから適宜キャストして使ってみてください。
コード:
DataTable dt = new DataTable();
dt.Columns.Add("Num");
dt.Columns.Add("Name");
dt.Rows.Add(new string[]{"1","a"});
dt.Rows.Add(new string[]{"2","b"});
dt.Rows.Add(new string[]{"3","c"});
dt.Rows.Add(new string[]{"4","d"});
checkedListBox1.DataSource = dt;
checkedListBox1.DisplayMember = "Name";

//チェックされているレコードのデータを取得
foreach(object itemChecked in checkedListBox1.CheckedItems){
  MessageBox.Show(
    "Number:" + ((System.Data.DataRowView)itemChecked).Row["Num"].ToString()
    + " Name:" + ((System.Data.DataRowView)itemChecked).Row["Name"].ToString()
  );
}


サクさん
会議室デビュー日: 2003/08/07
投稿数: 6
投稿日時: 2003-10-18 16:20
ありがとうございました!!
DataRowViewを使って取得できました!!
1

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