Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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中重新排序页面时,Visio不会保存更改#_C#_Vsto_Visio - Fatal编程技术网

C# 当我在C中重新排序页面时,Visio不会保存更改#

C# 当我在C中重新排序页面时,Visio不会保存更改#,c#,vsto,visio,C#,Vsto,Visio,我正在尝试使用VSTO(C#addin)对Visio中的页面重新排序。下面的代码就是这样做的。“页面列表”是Visio页面对象的Linq列表。“movement”变量告诉循环要移动列表中页面的索引位置多少次。Move方法获取一个列表、我要移动的项的索引以及移动的方向。Move方法将其向上或向下移动1 for (int i = 1; i <= movement; i++) { int listIndex = pageList.FindIndex(x => x == page);

我正在尝试使用VSTO(C#addin)对Visio中的页面重新排序。下面的代码就是这样做的。“页面列表”是Visio页面对象的Linq列表。“movement”变量告诉循环要移动列表中页面的索引位置多少次。Move方法获取一个列表、我要移动的项的索引以及移动的方向。Move方法将其向上或向下移动1

for (int i = 1; i <= movement; i++)
{
    int listIndex = pageList.FindIndex(x => x == page);
    Converter.Move(pageList,listIndex,moveDirection);
}
当我运行它时,它会正确地执行索引。下面的例子显示,“Women 144”页面位于索引5(最初位于索引16)。所以在视觉上看起来不错。但是当我保存Visio,关闭它,然后重新打开文档时,“Women 144”页面由于某种原因现在位于索引9处。有什么我遗漏的吗?为什么以前很好,但现在不行


我猜这与天气有关。如果更改集合中某项的索引,则其他索引值也会更改以进行补偿。在Visio页面索引分配循环中,使用
i--
递减。这可能会导致问题,具体取决于Visio收集组织的操作顺序。我建议按升序构建Visio索引值。我认为我们需要看到更多代码才能清楚,但请记住a)Visio中的页面集合是基于1的(而不是零),因此您的反向循环应该是
for(int I=pageList.Count;I>0;I--)
和b)您需要检查背景页面,因为您无法移动它们,也无法将前景页面移到背景页面之外(背景页面无序)。遗憾的是,我也尝试了升序。最后我把所有的背景页面都改成了普通页面。我基本上放弃了。不值得再花一整天的时间在一个不那么重要的功能上。@JohnGoldsmith+1教我背景页面是无序的。我猜这和。如果更改集合中某项的索引,则其他索引值也会更改以进行补偿。在Visio页面索引分配循环中,使用
i--
递减。这可能会导致问题,具体取决于Visio收集组织的操作顺序。我建议按升序构建Visio索引值。我认为我们需要看到更多代码才能清楚,但请记住a)Visio中的页面集合是基于1的(而不是零),因此您的反向循环应该是
for(int I=pageList.Count;I>0;I--)
和b)您需要检查背景页面,因为您无法移动它们,也无法将前景页面移到背景页面之外(背景页面无序)。遗憾的是,我也尝试了升序。最后我把所有的背景页面都改成了普通页面。我基本上放弃了。不值得再花一整天的时间在一个不那么重要的功能上。@JohnGoldsmith+1教我背景页面是无序的。
for (int i = pageList.Count - 1; i >= 0; i--)
{
    pageList[i].Index = (short)(i + 1);
}