从ListBox中提取所选值

时间:2012-03-12 07:14:58

标签: c# winforms visual-studio-2010

如何从列表框中提取所选文本和值。 这是我填充列表框的方式

           // Populate ListBox

            ListItem lstListItem = new ListItem();

            int intRecordCount = objDataSet.Tables[0].Rows.Count;

            for (int i = 0; i <= intRecordCount - 1; i++)
            {
                lstListItem.Text = objDataSet.Tables[0].Rows[i]["SN_Notes"];
                lstListItem.Value = objDataSet.Tables[0].Rows[i]["ID"];
                this.lstNote.Items.Add(lstListItem);
            }

然后当我尝试获取所选值时,它返回null值。我正在使用Winform / VS2010

           intRecordCount = lstNote.Items.Count;

           for (int i = 0; i <= intRecordCount - 1; i++)
           {
                  lstNote.SelectedIndex = i;
                  strID = lstNote.SelectedValue.ToString(); // Always return Null Value
           }

提前谢谢!!

3 个答案:

答案 0 :(得分:2)

// Populate ListBox
int intRecordCount = objDataSet.Tables[0].Rows.Count;

for (int i = 0; i <= intRecordCount - 1; i++)
{
    ListItem lstListItem = new ListItem();
    lstListItem.Text = objDataSet.Tables[0].Rows[i]["SN_Notes"];
    lstListItem.Value = objDataSet.Tables[0].Rows[i]["ID"];
    this.lstNote.Items.Add(lstListItem);
}

答案 1 :(得分:1)

您的代码是baaad:|

    // Populate ListBox
    int intRecordCount = objDataSet.Tables[0].Rows.Count;

    for (int i = 0; i <= intRecordCount - 1; i++)
    {
        ListItem lstListItem = new ListItem();
        lstListItem.Text = objDataSet.Tables[0].Rows[i]["SN_Notes"];
        lstListItem.Value = objDataSet.Tables[0].Rows[i]["ID"];
        this.lstNote.Items.Add(lstListItem);
    }

您需要在每次迭代时创建ListItem的新实例 - 否则,您的ListBox将包含单个ListItem的多个副本。

答案 2 :(得分:0)

首先,您没有正确绑定ListBox。您应该尝试使用此代码:

lstListItem.DataSource = objDataSet.Tables[0];
lstListItem.DisplayMember = "SN_Notes";
lstListItem.ValueMember = "ID";