1

我正在两个列表框之间创建一个数据传输控件。我在两个框中都显示了项目,其中包含数据的文本和属性值。但是,当我从一个转移到另一个时,我可以访问转移的项目(使用调试)并查看 text 属性(不是 value 属性),但它没有显示在我发送到的列表框中。我什至尝试过刷新对象,但没有运气。

谁能告诉我我做错了什么?

private void btnToLeft_Click(object sender, EventArgs e)
    {
            Telerik.WinControls.UI.RadListDataItem item = new Telerik.WinControls.UI.RadListDataItem(lstRight.SelectedItem.DisplayValue.ToString(), lstRight.SelectedItem.Value);
            lstLeft.Items.Add(item);
            lstRight.Items.RemoveAt(lstRight.SelectedItem.RowIndex);
            lstLeft.Refresh();
            lstRight.Refresh();
    }
4

2 回答 2

1

这是我用于类似情况的代码。

private void btnToLeft_Click(object sender, EventArgs e)
{
      if (lstRight.Items.Count == 0) { return; }
      if (lstRight.SelectedItem == null) { return; }

      RadListDataItem item = lstRight.SelectedItem;
      lstRight.Items.Remove(item);
      lstLeft.Items.Add(item);
}

你可以像这样使它更通用一点。

private void MoveToTargetListBox(RadListControl sourceListBox, RadListControl targetListBox)
{
  try
  {
    if (sourceListBox.Items.Count == 0) { return; }
    if (sourceListBox.SelectedItem == null) { return; }

    RadListDataItem item = sourceListBox.SelectedItem;
    sourceListBox.Items.Remove(item);
    targetListBox.Items.Add(item);
  }
  catch (Exception ex)
  {
    //handle Exception
  }
}

private void btnToLeft_Click(object sender, EventArgs e)
{
  MoveToTargetListBox(lstRight, lstLeft);
}

private void btnToRight_Click(object sender, EventArgs e)
{
  MoveToTargetListBox(lstLeft, lstRight);
}
于 2012-08-02T20:55:27.737 回答
0

我想我想通了。. . 我引用了 lstRight.SelectedItem.DisplayValue.ToString() 而不是文本值 - lstRight.SelectedItem.Text

似乎现在可以工作了。... !

于 2012-08-03T13:13:57.363 回答