1

2 つのリストボックス間のデータ転送コントロールを作成しています。両方のボックスにアイテムが表示され、テキストとプロパティ値にデータが保持されています。ただし、一方から他方に転送すると、転送された項目に (デバッグを使用して) アクセスし、(値のプロパティではなく) テキスト プロパティを確認できますが、送信先のリスト ボックスには表示されません。オブジェクトをリフレッシュしようとしましたが、うまくいきませんでした。

誰が私が間違っているのか教えてもらえますか?

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 に答える