如何移动两个Devex gridview列在一起

本文关键字:Devex gridview 在一起 两个 何移动 移动 | 更新日期: 2023-09-27 18:06:03

我用c#使用devex gridview,我想要的是当我拖动列改变其顺序时,其他列应该在下一个或在我移动的列之前移动,我使用鼠标向上事件和列位置改变事件,我得到一个堆栈过流异常可以使用:

 int index1 = gridView1.Columns["mail2"].VisibleIndex;
m_Mail1selection.CheckMarkColumn.VisibleIndex = index1;
int index2 = gridView1.Columns["mail1"].VisibleIndex;
m_Mail2selection.CheckMarkColumn.VisibleIndex = index2;

有人知道怎么实现吗,第一列是邮件地址第二列是Checkedit标记邮件是否要发送mail2也是一样

提前感谢任何帮助

如何移动两个Devex gridview列在一起

使用ColumnPositionChanged事件,但是您需要确保使用条件。你的问题是你正在设置VisibleIndex不管你是否需要,因为你不断改变列的位置事件不断触发,因此把事件进入一个永恒的循环(这是一个StackOverflow)

试试这样

    private void gridView1_ColumnPositionChanged(object sender, EventArgs e)
    {
        if ((colMail1Check.VisibleIndex - colMail1.VisibleIndex) != 1)
        {
            colMail1Check.VisibleIndex = colMail1.VisibleIndex + 1;
        }
        if ((colMail2Check.VisibleIndex - colMail2.VisibleIndex) != 1)
        {
            colMail2Check.VisibleIndex = colMail2.VisibleIndex + 1;
        }
    }

这将检查check列是否在其"主"列旁边,如果没有调整VisibleIndex到主列旁边。这也将处理如果有人在两列之间拖动列(即,你在Mail1和Mail1Check列之间拖动Mail2列,因为Mail2Check将移动到Mail2旁边,Mail1Check将再次移动到Mail1旁边,确保它始终在列旁边。

希望能有所帮助