111,094
社区成员




/// <summary>
/// 鼠标事件,以浮动窗口显示订单备注
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gvOrders_MouseMove(object sender, MouseEventArgs e)
{
// 获取鼠标焦点
DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hi = gvOrders.CalcHitInfo(new Point(e.X, e.Y));
// 如果鼠标不是在行上.或者不在列上
if (hi.RowHandle < 0 || hi.Column == null)
{
_RowHandle = -1;
return;
}
// rowHandle为全局变量,如果上次指向的是这一行的数据.则这次不重新初始化ToolTip.(因为鼠标一移到列上面则会触发多次的MouseMove)
// 如果RowHandle为不等于rowHandle则重新显示ToolTip
if (_RowHandle == -1)
{
_RowHandle = hi.RowHandle;
}
else
{
if (hi.RowHandle == _RowHandle)
{
return;
}
else
{
_RowHandle = hi.RowHandle;
}
}
// 获取行
DataRow row = gvOrders.GetDataRow(hi.RowHandle);
// 只有在订单编号列的时候才显示ToolTip
if (hi.Column.FieldName == "OrderId")
{
// 创建ToolTip的数据显示,只有订单有备注的时候才显示ToolTip
string tooltipText = row["OrderRemark"].ToString();
string orderId = row["OrderId"].ToString();
if (!string.IsNullOrEmpty(tooltipText))
{
// 获取显示ToolTip事件实例
ToolTipControllerShowEventArgs args = CreateShowArgs(tooltipText);
// 设置ToolTip标题
args.Title = "test";
// 显示ToolTip 这里不可以用控件的坐标.要用屏幕的坐标Control.MousePosition
toolTipController.ShowHint(args, System.Windows.Forms.Control.MousePosition);
}
}
}
/// <summary>
/// 创建显示ToolTip事件实例
/// </summary>
/// <param name="tooltipText"></param>
/// <returns></returns>
private ToolTipControllerShowEventArgs CreateShowArgs(string tooltipText)
{
ToolTipControllerShowEventArgs args = toolTipController.CreateShowArgs();
args.ToolTip = tooltipText;
return args;
}