2011-07-14 50 views
1

我不知道标题是否表达我想要的内容。我有一个WPF中的ListBox,我生成了很多元素。当我点击某个元素的同时仍然生成,我希望我的选定项目不会在列表中向下移动,因此我再也看不到它了,我想保留在点击它的确切位置。列表框项目在选择后保持专注

如果这是可能的,有人可以指出一些想法如何在C#中做到这一点?

谢谢。

+0

什么UI,Winforms,WPF,ASP .NET? – msarchet

+0

啊,对不起,我忘了说:WPF – Kobe

回答

2

假设这是连一个好主意,你正在使用的WinForms

第1步:

确定在源所选项目的索引。

第2步:

当您将项目添加到ListBox同时确保分裂ListBox处的项目以前是在这一点上插入项,然后添加在该项目的剩余部分,该指数在你如果它现在位于列表中的其他位置,则已将其删除。

代码:

//让我们假设你知道如何获得该项目的位置,点击时和 //项目保存到一个名为OriginalItem

public void PutTheItemInTheSameSpot() 
{ 
    var listboxitems = (List<Integer>)YourListBox.DataSource; 

    var originalClikedItem = OriginalItem; 
    var topPart = new List<Integer>(); 

    for (i = 0; i < itemPosition; i++) 
    { 
     topPart.Add(listboxItems[i]); 
    } 
    topPart.Add(originalClickedItem); 

    var bottomPart = listboxitems.Remove(toppart); 

    YourListBox.DataSource = toppart.AddRange(bottomPart); 


} 

变量

看到你的WPF编辑

该应该应该在想法。

+0

是的,谢谢你的ideea,为什么我要这个,因为我可以右键点击该项目,并与它的东西,但是当我选择的项目,然后消失,所以这有点烦人 – Kobe

2

只是一个想法:只要将项目添加到ListBox中,您就可以尝试让视图响应事件。在事件处理程序,你可能会迫使所选项目滚动到视图可能保持它在当前的“可视”的位置:

listBox.ScrollIntoView(listBox.SelectedItem); 

我以前从来没有试过这种因此它可能会或可能不会产生预期的影响?