首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何遍历wxNotebook的页面?

我如何遍历wxNotebook的页面?
EN

Stack Overflow用户
提问于 2013-10-03 05:20:19
回答 2查看 151关注 0票数 2
代码语言:javascript
复制
void Mainframe::OnClearNotebook( wxCommandEvent& e )
{
    int end = m_notebook->GetPageCount();
    for ( int i = 0; i < end; i++ )
    {
        if ( m_notebook->GetPageText( i ) != "Server Log" )
        {
            m_notebook->DeletePage(i);
        }
    }
}

此代码以此形式崩溃,其消息为“m_记事本->GetPageText()索引超出范围”;

如何正确地遍历所有页面?

编辑,解决方案:

代码语言:javascript
复制
void Mainframe::OnClearNotebook( wxCommandEvent& e )
{   
    while ( m_notebook->GetPageCount() > 1 )
    {
        int end = m_notebook->GetPageCount() - 1;
        if ( m_notebook->GetPageText( end ) != "Server Log" )
        {
            m_notebook->DeletePage(end);
        }
        else
        {
            break;
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-03 05:24:37

如果以务实方式删除,则GetPageCount()将被更改,因此end将保留早期版本的值

就像。

你有100在m_记事本->GetPageCount()

所以结尾= 100

在迭代10项之后,您将删除5项,所以现在列表中将有95项,但是您正在迭代到100项--这可能是个问题。

票数 4
EN

Stack Overflow用户

发布于 2013-10-03 05:30:37

如果要从非链接列表中删除项,则需要迭代列表,并收集要在另一个新列表中删除的所有列表项的索引。一旦您完成了迭代和收集索引,使用您收集的每个索引调用原始列表中的delete。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19151343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档