2012-08-02 35 views
1

我在兩個列表框之間創建數據傳輸控件。 我有兩個框中顯示的項目,文本和屬性值保存數據。 雖然我從一個轉移到另一個,但我可以訪問轉移的項目(使用調試)並查看文本屬性(不是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(); 
    } 

回答

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); 
} 
+0

感謝這對我幾乎適用 - 當我移動項目,但價值是失去了。 ..。任何想法如何讓它保持/堅持? – sharcfinz 2012-08-03 15:37:18

0

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

似乎現在就工作。 ..。 !