MSHFLEXGRID控件调用RemoveItem()方法后再调用AddItem方法,AddItem方法不起作用,运行时在MSHFLEXGRID上看不见新加的项。 
如: 
m_gridTask.SetRow(1); 
m_gridTask.SetCol(1); 
m_gridTask.SetText("a1"); 
m_gridTask.SetRow(2); 
m_gridTask.SetCol(1); 
m_gridTask.SetText("b2"); m_gridTask.RemoveItem(1); m_gridTask.AddItem("aa",COleVariant(long(2L))); //这句话没用,不知道为什么。但是如果最后调用m_gridTask.GetRows(),得出的结果是正确地,就是在界面上看不见。希望朋友们能指点一二。

解决方案 »

  1.   

    各种方法我都用过了,包括SetRedraw,Invalidate,Refresh,可是都没用。
      

  2.   

    m_gridTask.AddItem("aa",COleVariant(long(0L)));
      

  3.   

    对MSHFLEXGRID不熟。不过建议楼主去试试MFCGridCtrl (新版本2.25也出来了)
    地址:
    http://www.codeproject.com/miscctrl/gridctrl.asp
      

  4.   

    m_gridTask.SetFixedRows(1);
    m_gridTask.SetFixedCols(1);
    m_gridTask.SetCols(0, 2);
        m_gridTask.SetSelectionMode(0);
    m_gridTask.SetRows(3);
    m_gridTask.SetRow(1); 
    m_gridTask.SetCol(1); 
    m_gridTask.SetText("a1"); 
    m_gridTask.SetRow(2); 
    m_gridTask.SetCol(1); 
    m_gridTask.SetText("b2"); void CDdDlg::OnButton1() 
    {
    m_gridTask.AddItem("aa",COleVariant(m_gridTask.GetRow())); 
    }void CDdDlg::OnButton2() 
    {
       m_gridTask.RemoveItem(m_gridTask.GetRow());//can not remove last non fixed row}前面的回复没有测试过,
    can not use AddItem on fixed row
    can not remove last non fixed row
    索引是从0开始的,包括fixed rows/cols
      

  5.   

    m_gridTask.SetFixedRows(1);
    m_gridTask.SetFixedCols(1);
    m_gridTask.SetCols(0, 2);
        m_gridTask.SetSelectionMode(0);
    m_gridTask.SetRows(3);
    m_gridTask.SetRow(1); 
    m_gridTask.SetCol(1); 
    m_gridTask.SetText("a1"); 
    m_gridTask.SetRow(2); 
    m_gridTask.SetCol(1); 
    m_gridTask.SetText("b2"); void CDdDlg::OnButton1() 
    {
    CString str; str.Format("%d", m_gridTask.GetRows());
    AfxMessageBox(str);
        m_gridTask.AddItem("aa",COleVariant(long(2L))); 
    str.Format("%d", m_gridTask.GetRows());
    AfxMessageBox(str);
        m_gridTask.RemoveItem(2);
    str.Format("%d", m_gridTask.GetRows());
    AfxMessageBox(str);
    }
    我这段代码执行一次,ok,没问题,可以看到新加了一行又删除了,可是执行第二次,就看不见添加的行了,大家说是不是很奇怪。
    如果我有选择控件的权利,我是不会选择这个控件的,真麻烦。
    还是要感谢各位朋友。