【问题标题】:Drag and Drop sequence order拖放顺序
【发布时间】:2011-06-27 10:09:11
【问题描述】:

可能是问题的标题不够充分,这是我的问题,我先给你举个例子:

原始序列: 0.项目_105 1. 项目_13 2. Item_6 3. Item_14 4. Item_106

修改序列: 0.项目_105 1. Item_14 2.项目_13 3. Item_6 4. Item_106

这里我必须有 2 个索引: 索引 1 = 3 索引2 = 1 这意味着旧元素 3 到了新位置 1

我实际上是在使用 C# 语言,当我将一个项目拖放到一个新位置时,有时它会给我很好的索引,有时却没有! 这是我用来获取索引的“for”循环:

for (int i = 0; i < stops.Count - 1; i++)
{
    if (originalOrder[i] != modifiedOrder[i])
    {
        if (originalOrder[i] == modifiedOrder[i + 1] && index2 == -1)
            index2 = i;
        else if (modifiedOrder[i] == originalOrder[i + 1] && index2 == -1)
            index2 = i;
        if (originalOrder[i] != modifiedOrder[i + 1] && index1 == -1)
            index1 = i;
    }
}

所以这是我的问题:如何获得正确的索引 1 和 2?我需要稍后在代码中做一些工作人员,如果我有正确的索引,其余的都可以!

谁能帮帮我?

【问题讨论】:

    标签: c# arrays indexing


    【解决方案1】:

    首先,您的代码中的不对称性看起来很可疑。在不仔细查看您当前的代码的情况下,我会假设当您将一个项目拖到一个方向而不是另一个方向时,它可能会给您正确的答案。

    index1 = -1;
    index2 = stops.Count;  // This could be off by one
    for (int i = 0; i < stops.Count - 1; i++)
    {
        // First, find the bounds of what was moved
        if (originalOrder[i] != modifiedOrder[i] && index1 == -1)
        {
            index1 = i;
        }
        if (index1 != -1 && originalOrder[i] == modifiedOrder[i])
        {
            index2 = i-1;
            // No need to look at any more items
            break;
        }
    }
    // Swap indices depending on which direction item was moved
    if (originalOrder[index1] != modifiedOrder[index2])
    {
        int temp = index1;
        index1 = index2;
        index2 = temp;
    }
    

    我无法从您的示例中看出 stop.Count 代表什么。您需要确保将索引 2 初始化为最后一个索引。

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多