我有一个 Xtragrid,我在其中使用 Layoutview。在我的卡片中,我有两个组,其中包含一些内容(没有 grouprow!)。如果用户单击 groupcaption,是否可以触发单击事件?
这是一个正常的群体!例如,选择 3 个文本编辑器,然后在设计器中右键单击-> 组。您可以在布局视图的卡片中执行相同的操作。
问候。
我有一个 Xtragrid,我在其中使用 Layoutview。在我的卡片中,我有两个组,其中包含一些内容(没有 grouprow!)。如果用户单击 groupcaption,是否可以触发单击事件?
这是一个正常的群体!例如,选择 3 个文本编辑器,然后在设计器中右键单击-> 组。您可以在布局视图的卡片中执行相同的操作。
问候。
您可以使用 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!");
使用 gridview mousemove 事件获取鼠标位置。
private void grvReleaseInfo_MouseMove(object sender, MouseEventArgs e)
{
mouseLocation = e.Location;
}
然后转到gridview的click事件并检查鼠标位置与您的项目的位置(在我的示例中为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”类型的变量。如果您不知道坐标,则可以在调试器中设置断点并在单击项目的左上角然后单击右下角时观察鼠标位置。然后你有你必须检查的范围。
问候