Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表框项目在选择后保持焦点_C#_Wpf - Fatal编程技术网

C# 列表框项目在选择后保持焦点

C# 列表框项目在选择后保持焦点,c#,wpf,C#,Wpf,我不知道标题是否表达了我想要的。我在WPF中有一个列表框,我在其中生成许多元素。当我在生成的同时单击一个元素时,我希望我所选的项目不会在列表中向下移动,这样我就看不到它了,我希望停留在我单击它的确切位置 如果这是可能的,有人能指出一些关于如何在C中实现它的想法吗 谢谢。假设这是一个好主意,并且您正在使用winforms 步骤1: 确定源中选定项的索引 步骤2: 将项目添加到列表框时,在该项目以前所在的索引处拆分列表框,然后在该点插入该项目,然后添加其余的项目,同时确保已删除该项目(如果该项目现在

我不知道标题是否表达了我想要的。我在WPF中有一个列表框,我在其中生成许多元素。当我在生成的同时单击一个元素时,我希望我所选的项目不会在列表中向下移动,这样我就看不到它了,我希望停留在我单击它的确切位置

如果这是可能的,有人能指出一些关于如何在C中实现它的想法吗


谢谢。

假设这是一个好主意,并且您正在使用winforms

步骤1:

确定源中选定项的索引

步骤2:

将项目添加到列表框时,在该项目以前所在的索引处拆分列表框,然后在该点插入该项目,然后添加其余的项目,同时确保已删除该项目(如果该项目现在位于列表的其他位置)

代码:

//假设您知道如何在单击项目时获取该项目的位置并保存 //将项添加到名为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的编辑


可以在idea中工作。

假设这是一个好主意,并且您正在使用winforms

步骤1:

确定源中选定项的索引

步骤2:

将项目添加到列表框时,在该项目以前所在的索引处拆分列表框,然后在该点插入该项目,然后添加其余的项目,同时确保已删除该项目(如果该项目现在位于列表的其他位置)

代码:

//假设您知道如何在单击项目时获取该项目的位置并保存 //将项添加到名为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的编辑


可以在idea中工作。

只是一个想法:您可以尝试在将项目添加到列表框时让视图响应事件。在事件处理程序中,您可以强制所选项目滚动到视图中,并将其保持在当前可查看位置:

listBox.ScrollIntoView(listBox.SelectedItem);

我以前从未尝试过这样做,因此它可能会或可能不会产生所需的效果?

只是一个想法:您可以尝试在将项目添加到列表框时让视图响应事件。在事件处理程序中,您可以强制所选项目滚动到视图中,并将其保持在当前可查看位置:

listBox.ScrollIntoView(listBox.SelectedItem);

我以前从未尝试过,所以它可能会也可能不会产生预期的效果?

什么UI,Winforms,WPF,ASP.NET?啊,对不起,我忘了说:WPF什么UI,Winforms,WPF,ASP.NET?啊,对不起,我忘了说:WPFYes,谢谢你的创意,为什么我想要这个,因为我可以右键单击该项目并使用它,但是当我选择项目时,它会消失,所以有点烦人是的,谢谢你的想法,为什么我想要这个,因为,我可以右键点击项目并使用它进行操作,但是当我选择项目时,它会消失,所以有点烦人