2009-07-16 1 views
5

私は文字列 'item3'と 'item1、item2、item3、item4'を持つリストボックスを持っています。リストボックスでitem3を選択するにはどうすればいいですか?c#文字列に値の名前がある場合、リストボックス項目を選択するにはどうすればよいですか?

おかげ

+0

SelectedValueのが動作しない場合、あなたはあなたのコードを投稿することができますか? – kemiller2002

+0

WPFを使用していますか?私はSelectedValueがいくつかのコントロールでR/Wではないことを知っています。その場合は、WPFの質問にWPFとしてタグを付けることを忘れないでください。そうでない場合は無視してください;) –

答えて

14
int index = listBox1.FindString("item3"); 
// Determine if a valid index is returned. Select the item if it is valid. 
if (index != -1) 
    listBox1.SetSelected(index,true); 
+1

または、lb.SelectedIndex = lb.FindStringExact(fieldValue);を実行できます。 –

+0

私は.SetSelected()関数を持っていないので、これらのどれも私のために働いていません...私はSystem.ControlsからListBoxを使用していて、それが異なっていることを発見しました.. –

0

は読み取り/書き込みSelectedValueのではないですか?

+0

lstbox.selectedvalue = strItem;しかし、それは私にとってはうまくいかないようです。 –

+0

このWinFormsまたはWebFormsですか? – Lazarus

4
listBox.FindStringExact("item3"); 

最初に見つかった項目のインデックスを返します。一致するものが見つからない場合はListBox.NoMatchesを返します。

あなたはその後、

1

ListBox.SetSelected方法で試してみてください、この項目を選択するには

listBox.SetSelected(index, true); 

を呼び出すことができます。

1

は多分このように:

public bool SelectItem(ListBox listBox, string item) 
    { 
     bool contains = listBox.Items.Contains(item); 
     if (!contains) 
      return false; 
     listBox.SelectedItem = item; 
     return listBox.SelectedItems.Contains(item); 
    } 

試験方法:

public void Test() 
    { 
     string item = "item1"; 
     if (!SelectItem(listBox, item)) 
     { 
      MessageBox.Show("Item not found."); 
     } 
    } 
+0

"Item not found" " –

+0

+1であり、試験方法も提供する。良いプログラミングの習慣。 –

1

SelectedValueのは、あなたがリストボックスのためValueMemberで設定している場合にのみ動作します。

また、ValueMemberを設定しても、ListBox.Sorted = trueの場合、selectedValueは機能しません。

Setting selected item in a ListBox without looping

に私のポストをチェックしてくださいあなたは、これらのアプローチの1試すことができます。これは、すべてのリストボックスのための一般的な方法である

  1. lb.SelectedValue = fieldValue;

  2. lb.SelectedIndex = lb.FindStringExact(fieldValue);

  3. を。実装は、リストボックスにバインドする内容に基づいて変更されます。私の場合、それはDataTableです。

    private void SetSelectedIndex(ListBox lb, string value) 
    { 
        for (int i = 0; i < lb.Items.Count; i++) 
        { 
         DataRowView dr = lb.Items[i] as DataRowView; 
         if (dr["colName"].ToString() == value) 
         { 
          lb.SelectedIndices.Add(i); 
          break; 
         } 
        }  
    } 
    
+1

これは私が女の子を初めて見たときです。お会いできてよかったです。しかし、とにかく私のイニシエイトは何の誤りもないと指摘しています。あなたの答えは完全に正しいです(私はこれまでチェックしました)。 – prabhakaran

0
static class ControlHelper 
{ 
    public static void SelectExactMatch(this ComboBox c, string find) 
    { 
     c.SelectedIndex = c.FindStringExact(find, 0); 
    } 
} 
-1
CheckBoxList.Items.FindByValue("Value").Selected = true; 
関連する問題