单击布局视图中的组标题

时间:2012-10-04 12:44:45

标签: c# winforms devexpress xtragrid

我有一个Xtragrid,我使用Layoutview。在我的卡片中,我有两个包含一些内容的群组(没有群组!)。如果用户单击groupcaption,是否可以触发click事件?

这是一个正常的群体!例如,在设计器中选择3 textedits然后右键单击>组。你可以在布局视图的卡片内做同样的事情。

问候。

2 个答案:

答案 0 :(得分:2)

您可以使用View的MouseDown事件处理程序并使用HitTests查看它是否为布局项,然后测试布局项以查看它是否为组并检查它的边框信息以获取标题边界。

       LayoutView View = (sender as LayoutView);
        var hi = View.CalcHitInfo(e.Location);
        if (hi.HitTest == LayoutViewHitTest.LayoutItem && hi.LayoutItem is DevExpress.XtraLayout.LayoutControlGroup)
        {
            var Border = (hi.LayoutItem.ViewInfo.BorderInfo as DevExpress.Utils.Drawing.GroupObjectInfoArgs);
            if (Border.CaptionBounds.Contains(e.Location))
            {
                MessageBox.Show("Hit Group: " + Border.Caption);
                return;
            }
        }
        MessageBox.Show("Missed!");

答案 1 :(得分:0)

使用gridview mousemove事件获取鼠标位置。

    private void grvReleaseInfo_MouseMove(object sender, MouseEventArgs e)
    {
        mouseLocation = e.Location;
    }

然后转到gridview的click事件并使用项目的位置检查mouseposition(在我的示例中为groupcaption)

private void grvReleaseInfo_Click(object sender, EventArgs e)
        {
            if ((mouseLocation.X > 38) &&
                (mouseLocation.X < 85) &&
                (mouseLocation.Y > 46) &&
                (mouseLocation.Y < 117))
            {
                //Do sth.
            }

鼠标定位是“Point”类型的变量。如果您不知道坐标,可以在调试器中设置断点,如果单击项目的左上角,然后单击右下角,则可以观察鼠标位置。然后你有你必须检查的范围。

问候