データを入力しているCheckBoxListがあります。リストからチェックされたアイテムを取得しようとすると、アイテムの序数しか取得できず、値を取得できません。
Items [i] .Valueを使用できることを読みましたが、これを実行しようとすると、拡張メソッド '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を使用しています
どんな考えでも感謝します...ありがとう
これは非常に簡単になりました。 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);
}
}
}
これを使ってみてください。
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」は、CAPS in Valueにある必要があります。
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);
アイテムをチェックするには、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
}
-OR-
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);
お役に立てれば...
これを試すことができます:-
string values = "";
foreach(ListItem item in myCBL.Items){
if(item.Selected)
{
values += item.Value.ToString() + ",";
}
}
values = values.TrimEnd(','); //To eliminate comma in last.
//簡単なサンプルコード:
foreach (var item in YourCheckedListBox.CheckedItems)
{List<string>.Add(item);}
これの代わりに:
CheckboxList1.Items[i].value;
これを試して:
CheckboxList1.Items[i].ToString();
それは私のために働いた:)
文字列のリストを初期化し、選択されたアイテムを追加できます。
コードを確認してください、私のために正常に動作します。
List<string> modules = new List<string>();
foreach(ListItem s in chk_modules.Items)
{
if (s.Selected)
{
modules.Add(s.Value);
}
}
これを使用してみてください:
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";
}
}