如何将两个Devex gridview列一起移动?

时间:2011-08-16 22:53:26

标签: c# devexpress

我正在使用带有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的ssame事项

提前感谢任何帮助

问候

1 个答案:

答案 0 :(得分:1)

使用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列是否在其“main”列的旁边,如果不是,则将VisibleIndex调整为主列旁边。如果有人在两列之间拖动列,也会处理(即,将Mail2列拖到Mail1和Mail1Check列之间,因为Mail2heck将移动到Mail2旁边,Mail1Check将再次移动到Mail1旁边,确保它总是在专栏旁边。

希望这有帮助