【问题标题】:Saving data for multiple items while navigating through list of items在浏览项目列表时保存多个项目的数据
【发布时间】:2014-04-25 21:17:35
【问题描述】:

我是这种 c++/cli 语言的新手,我寻求帮助。我开发了一个关于 ListBoxes 的项目,我得到了一些代码并学习了它的基本步骤。但我实际上被困在这个项目中最困难的部分。

该项目计算帧数并保留它。它只是一个整数,我的代码中有下一个和上一个按钮。当人们单击图像中的某个位置时,gui 会获取 x 和 y 坐标并将其正确写入列表框。我想要做的是,当人们按下下一个按钮时,framenumber 增加一个并清除列表框界面并准备好获取其他 x 和 y 坐标。当人们按下上一个按钮时,ListBox 应该显示上一个帧号 x 和 y 坐标。

我的问题是,我可以将这些 x 和 y 数据保存在某个地方并随意访问吗?我应该怎么做才能保留这些数据?我将不胜感激任何帮助或想法。

感谢您的帮助。

【问题讨论】:

  • 我重新命名了这个问题,以更符合您的实际要求。如果您实际上是在寻求有关列表框和 Windows 窗体的帮助,请编辑问题以使其更具体,或发布另一个问题。

标签: c++ windows winforms visual-c++ c++-cli


【解决方案1】:

我要做的是创建一个类来保存您要为每个帧保存的数据,并在用户浏览帧时将其粘贴到某种集合中。您可以保留一个列表或堆栈,以实现检索“上一个”项目,但我可能会使用Dictionary。将字典的键设为帧号,并将值设为您为每一帧保存的数据类别。

大概是这样的:

public ref class FrameData
{
public:
    int x;
    int y;

public:
    FrameData(int x, int y)
    {
        this->x = x;
        this->y = y;
    }
};

Dictionary<int, FrameData^>^ savedFrameData = gcnew Dictionary<int, FrameData^>();

// When they click the next or previous button:

// Save the data for the old frame.
savedFrameData->[oldFrameNumber] = gcnew FrameData(currentX, currentY);

// Retrieve the previous data for the new frame, if found.
FrameData^ dataForNewFrame;
if (savedFrameData->TryGetValue(newFrameNumber, dataForNewFrame))
{
    currentX = dataForNewFrame->x;
    currentY = dataForNewFrame->y;
}
else
{
    currentX = 0;
    currentY = 0;
}

【讨论】:

    猜你喜欢
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多