11

データを入力している CheckBoxList があります。リストからチェックされたアイテムを取得しようとすると、アイテムの序数しか取得できず、値を取得できません。

Items[i].Value を使用できると読みましたが、これを実行しようとすると、拡張メソッド「値」がないというエラーが表示されます。

情報を取得しようとするために使用しているコードは次のとおりです (GetItemText(i) は実際には項目のテキストではなく、項目の位置のみを提供することに注意してください)

   private void btnGO_Click(object sender, EventArgs e)
{
    for (int i = 0; i < chBoxListTables.Items.Count; i++)
    {
        if (chBoxListTables.GetItemChecked(i))
        {
            string str = chBoxListTables.GetItemText(i);
            MessageBox.Show(str);

            //next line invalid extension method
            chBoxListTables.Items[i].value;
        }
    }
}

これは.Net 4.0を使用しています

任意の考えをいただければ幸いです...ありがとう

4

9 に答える 9

17

これは非常に簡単に終わりました。chBoxListTables.Item[i] は文字列値であり、明示的な変換により変数にロードできました。次のコードが機能します。

private void btnGO_Click(object sender, EventArgs e)
{
    for (int i = 0; i < chBoxListTables.Items.Count; i++)
    {
          if (chBoxListTables.GetItemChecked(i))
        {
            string str = (string)chBoxListTables.Items[i];
            MessageBox.Show(str);
        }
    }
}
于 2012-09-18T22:26:47.663 に答える
4

これを使ってみてください。

        for (int i = 0; i < chBoxListTables.Items.Count; i++)
        {
            if (chBoxListTables.Items[i].Selected)
            {
                string str = chBoxListTables.Items[i].Text;
                MessageBox.Show(str);

                var itemValue = chBoxListTables.Items[i].Value;
            }
        }

「V」は、Value の CAPS である必要があります。

WinForm アプリで使用され、適切に実行される別のコード例を次に示します。

        var chBoxList= new CheckedListBox();
        chBoxList.Items.Add(new ListItem("One", "1"));
        chBoxList.Items.Add(new ListItem("Two", "2"));
        chBoxList.SetItemChecked(1, true);

        var checkedItems = chBoxList.CheckedItems;
        var chkText = ((ListItem)checkedItems[0]).Text;
        var chkValue = ((ListItem)checkedItems[0]).Value;
        MessageBox.Show(chkText);
        MessageBox.Show(chkValue);
于 2012-09-14T18:10:58.780 に答える
3

チェックした項目を取得するには、CheckedItemsまたはを使用できますGetItemsChecked。私は.NET 4.5で以下のコードを試しました

コレクションを反復処理しCheckedItemsます。これにより、リスト全体ではなく、チェックされたアイテムのリスト内のアイテム番号が得られます。したがって、リストの最初の項目がチェックされておらず、2 番目の項目がチェックされている場合、以下のコードは のようなテキストを表示しますChecked Item 1 = MyListItem2

//Determine if there are any items checked. 
if(chBoxListTables.CheckedItems.Count != 0)  
{
    //looped through all checked items and show results.
    string s = "";
    for (int x = 0; x < chBoxListTables.CheckedItems.Count; x++)
    {
        s = s + (x + 1).ToString() + " = " + chBoxListTables.CheckedItems[x].ToString()+ ", ";
    }
    MessageBox.Show(s);//show result
}

-また-

Items コレクションをステップ実行し、GetItemChecked各項目のメソッドを呼び出します。これにより、リスト全体の項目番号が得られるため、リストの最初の項目がチェックされておらず、2 番目の項目がチェックされている場合は、 のように表示されますItem 2 = MyListItem2

int i;  
string s;   
s = "Checked items:\n" ;  
for (i = 0; i < checkedListBox1.Items.Count; i++)  
{  
   if (checkedListBox1.GetItemChecked(i))  
   {  
      s = s + "Item " + (i+1).ToString() + " = " + checkedListBox1.Items[i].ToString() + "\n";  
   }  
}  
MessageBox.Show (s);

お役に立てれば...

于 2017-02-05T19:29:38.990 に答える
1

//簡単なコード例:

foreach (var item in YourCheckedListBox.CheckedItems)
{List<string>.Add(item);}
于 2017-05-05T17:42:48.353 に答える
0

これを使用してみてください:

 private void button1_Click(object sender, EventArgs e)
    {

        for (int i = 0; i < chBoxListTables.Items.Count; i++)
            if (chBoxListTables.GetItemCheckState(i) == CheckState.Checked)
            {
               txtBx.text += chBoxListTables.Items[i].ToString() + " \n"; 

            }
    }
于 2015-01-05T07:58:12.517 に答える
0

これの代わりに:

CheckboxList1.Items[i].value;

これを試して:

CheckboxList1.Items[i].ToString();

それは私のために働いた:)

于 2013-09-12T18:25:10.037 に答える