public CustomTooltip(KryptonDataGridView krpdgList) { this.krpdgList = krpdgList; this.form = krpdgList.FindForm(); this.krpdgList.ShowCellToolTips = false; this.krpdgList.CellMouseEnter += this.krpdgList_CellMouseEnter; this.krpdgList.CellBeginEdit += this.krpdgList_CellBeginEdit; this.krpdgList.MouseMove += krpdgList_MouseMove; this._showTimer = new Timer() { Interval = 1000 }; this._showTimer.Tick += new EventHandler(this.OnTimerTick); this._customTooltip.UseAnimation = false; this._customTooltip.UseFading = false; this._customTooltip.OwnerDraw = true; this._customTooltip.Popup += (sender, popupEventArgs) => { // on popip set the size of tool tip Size size = TextRenderer.MeasureText(this._toolTipText.ToString(), Oybab.ServicePC.Pattern.PaletteBlue.GetSelf().currentResourceFont, new Size(this.form.Width, 0), TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak | TextFormatFlags.NoPrefix); size.Height = size.Height + 2; size.Width = size.Width + 2; popupEventArgs.ToolTipSize = size; }; this._customTooltip.Draw += (sender, drawToolTipEventArgs) => { Rectangle rect = new Rectangle(drawToolTipEventArgs.Bounds.X, drawToolTipEventArgs.Bounds.Y, drawToolTipEventArgs.Bounds.Width, drawToolTipEventArgs.Bounds.Height); LinearGradientBrush itemTracking = new LinearGradientBrush(rect, Oybab.ServicePC.Pattern.PaletteBlue.GetSelf().GetBackColor1(PaletteBackStyle.ControlToolTip, PaletteState.Normal), Oybab.ServicePC.Pattern.PaletteBlue.GetSelf().GetBackColor2(PaletteBackStyle.ControlToolTip, PaletteState.Normal), Oybab.ServicePC.Pattern.PaletteBlue.GetSelf().GetBackColorAngle(PaletteBackStyle.ControlToolTip, PaletteState.Normal)); LinearGradientBrush itemBorderSelected = new LinearGradientBrush(rect, Oybab.ServicePC.Pattern.PaletteBlue.GetSelf().GetBorderColor1(PaletteBorderStyle.ControlToolTip, PaletteState.Normal), Oybab.ServicePC.Pattern.PaletteBlue.GetSelf().GetBorderColor2(PaletteBorderStyle.ControlToolTip, PaletteState.Normal), Oybab.ServicePC.Pattern.PaletteBlue.GetSelf().GetBorderColorAngle(PaletteBorderStyle.ControlToolTip, PaletteState.Normal)); drawToolTipEventArgs.Graphics.FillRectangle(itemTracking, rect.X, rect.Y, rect.Width - 1, rect.Height - 1); drawToolTipEventArgs.Graphics.DrawRectangle(new Pen(itemBorderSelected), rect.X, rect.Y, rect.Width - 1, rect.Height - 1); TextRenderer.DrawText(drawToolTipEventArgs.Graphics, drawToolTipEventArgs.ToolTipText, Oybab.ServicePC.Pattern.PaletteBlue.GetSelf().currentResourceFont, rect, Color.Black, TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak | TextFormatFlags.NoPrefix); }; }
private void OnTimerTick(object sender, EventArgs e) { if (this._showTimer != null) { if (!IsRun) { return; } this._showTimer.Stop(); if (null != _toolTipText && !string.IsNullOrWhiteSpace(_toolTipText.ToString())) { //if (TooltipCellRowIndex == CurrentCellRowIndex && TooltipCellColumnIndex == CurrentCellColumnIndex) //{ SizeF sizeF = TextRenderer.MeasureText(this._toolTipText.ToString(), Oybab.ServicePC.Pattern.PaletteBlue.GetSelf().currentResourceFont); float textLength = sizeF.Width; if (krpdgList.RowCount > TooltipCellRowIndex && krpdgList.ColumnCount > TooltipCellColumnIndex && textLength > this.krpdgList[TooltipCellColumnIndex, TooltipCellRowIndex].Size.Width) { IsTooltipDisplayed = true; ShowTime = DateTime.Now; Rectangle cellRect = krpdgList.GetCellDisplayRectangle(TooltipCellColumnIndex, TooltipCellRowIndex, false); Point locationOnForm = krpdgList.FindForm().PointToClient(krpdgList.Parent.PointToScreen(krpdgList.Location)); string text = this._toolTipText.ToString(); if (text.Length > 1000) { this._toolTipText = text = text.Substring(0, 1000) + "........."; } _customTooltip.Show(text, form, cellRect.X + locationOnForm.X + 10, cellRect.Y + locationOnForm.Y + 25 - 10); // Duration: 5 seconds. // } } } } }