显示DevExpress网格单元的工具提示 [英] Show tool-tips for DevExpress grid cells
本文介绍了显示DevExpress网格单元的工具提示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用一个DevExpress网格,我想显示工具提示 for 每个单元格 我将光标悬停在它上面。我为编写了一个代码。它工作正常并显示工具提示。但是工具提示 没有改变而我' m将光标移动到同一行。 (水平移动)。但如果我离开当前行并返回,则工具提示会发生变化。请建议我。
这是toolTipController的代码(为了更好地理解,我复制了整个方法)
private void toolTipController1_GetActiveObjectInfo(object sender,ToolTipControllerGetActiveObjectInfoEventArgs e)
{
bool validColumn = false;
if(e.SelectedControl!= gridControl1)
return;
GridHitInfo hitInfo = gridView1.CalcHitInfo(e.ControlMousePosition);
if(hitInfo.InRow == false)
return;
if(hitInfo.Column == null)
return;
//仅涉及以下字段
if(hitInfo.Column.FieldName ==Monday|| hitInfo.Column.FieldName ==Tuesday|| hitInfo.Column.FieldName ==星期三|| hitInfo.Column.FieldName ==Thursday|| hitInfo.Column.FieldName ==Friday)
validColumn = true;
if(!validColumn)
return;
string toolTip = string.Empty;
SuperToolTipSetupArgs toolTipArgs = new SuperToolTipSetupArgs();
toolTipArgs.Title.Text = string.Empty;
//从这一行获取数据
string columnCaption = hitInfo.Column.Caption;
DateTime dateOK = new DateTime(2000,1,1);
if(DateTime.TryParse(columnCaption,out dateOK))
{
DateTime date = DateTime.Parse(columnCaption);
int row = hitInfo.RowHandle;
long teacherID = long.Parse(gridView1.GetRowCellValue(row,TeacherID)。ToString());
GuaranteedDay gDay = db.GuaranteedDays.Where(p => p.Date == date&& p.TeacherID == teacherID&& p.Type == 5).FirstOrDefault ();
if(gDay!= null)
{
if(gDay.Note!= string.Empty)
{
//设置工具提示的描述
string description = string.Empty;
int type = gDay.Type;
开关(类型)
{
案例1:
description =保证提供;
休息;
案例2:
description =保证;
休息;
案例3:
description =texted;
休息;
案例4:
description =available;
休息;
案例5:
description =不可用;
休息;
}
//添加备注&工具提示说明
toolTip =注意:+ gDay.Note +\ nDescription:+ description;
string BodyText = toolTip;
toolTipArgs.Contents.Text = BodyText;
e.Info = new ToolTipControlInfo();
e.Info.Object = hitInfo.HitTest.ToString()+ hitInfo.RowHandle.ToString();
e.Info.ToolTipType = ToolTipType.SuperTip;
e.Info.SuperTip = new SuperToolTip();
e.Info.SuperTip.Setup(toolTipArgs);
}
}
}
}
}
感谢您的帮助,
Kushan Randima。
软件工程师
Davton Ltd
解决方案
e.Info.Object = hitInfo.HitTest.ToString()+ hitInfo.RowHandle.ToString()+ hitInfo.Column.FieldName;
我按如下方式更改了代码。现在,工具提示正在为网格视图中的每个单元格进行刷新。
e.Info.Object = hitInfo.HitTest.ToString()+ hitInfo.RowHandle.ToString()+ hitInfo.Column.FieldName;
I am using a DevExpress grid and I Would like to display a tooltip for each cell as I hover the cursor over it. I have written a code for that. It works fine and show tool-tips. But the tool tip is not changing while I'm moving the cursor on the same row. (Moving Horizontally). But if I leave the current row and come back, then the tool tip changes. Please advise me.
Here is the code for "toolTipController" (I have copied the whole method for a better understanding)
private void toolTipController1_GetActiveObjectInfo(object sender, ToolTipControllerGetActiveObjectInfoEventArgs e) { bool validColumn = false; if (e.SelectedControl != gridControl1) return; GridHitInfo hitInfo = gridView1.CalcHitInfo(e.ControlMousePosition); if (hitInfo.InRow == false) return; if (hitInfo.Column == null) return; //concern only the following fields if (hitInfo.Column.FieldName == "Monday" || hitInfo.Column.FieldName == "Tuesday" || hitInfo.Column.FieldName == "Wednesday" || hitInfo.Column.FieldName == "Thursday" || hitInfo.Column.FieldName == "Friday") validColumn = true; if (!validColumn) return; string toolTip = string.Empty; SuperToolTipSetupArgs toolTipArgs = new SuperToolTipSetupArgs(); toolTipArgs.Title.Text = string.Empty; //Get the data from this row string columnCaption = hitInfo.Column.Caption; DateTime dateOK = new DateTime(2000,1,1); if (DateTime.TryParse(columnCaption, out dateOK)) { DateTime date = DateTime.Parse(columnCaption); int row = hitInfo.RowHandle; long teacherID = long.Parse(gridView1.GetRowCellValue(row, "TeacherID").ToString()); GuaranteedDay gDay = db.GuaranteedDays.Where(p => p.Date == date && p.TeacherID == teacherID && p.Type == 5).FirstOrDefault(); if (gDay != null) { if (gDay.Note != string.Empty) { //Set description for the tool-tip string description = string.Empty; int type = gDay.Type; switch (type) { case 1: description = "guarantee offered"; break; case 2: description = "guaranteed"; break; case 3: description = "texted"; break; case 4: description = "available"; break; case 5: description = "unavailable"; break; } //Add Notes & description for the tool-tip toolTip = "Notes : " + gDay.Note + "\nDescription : " + description; string BodyText = toolTip; toolTipArgs.Contents.Text = BodyText; e.Info = new ToolTipControlInfo(); e.Info.Object = hitInfo.HitTest.ToString() + hitInfo.RowHandle.ToString(); e.Info.ToolTipType = ToolTipType.SuperTip; e.Info.SuperTip = new SuperToolTip(); e.Info.SuperTip.Setup(toolTipArgs); } } } } }
Thanks for helping,
Kushan Randima.
Software Engineer
Davton Ltd
解决方案
e.Info.Object = hitInfo.HitTest.ToString() + hitInfo.RowHandle.ToString() + hitInfo.Column.FieldName;
Hi,
I changed the code as follows. Now tool-tip is getting refresh for each cell in the grid-view.
e.Info.Object = hitInfo.HitTest.ToString() + hitInfo.RowHandle.ToString() + hitInfo.Column.FieldName;
这篇关于显示DevExpress网格单元的工具提示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文