예제 #1
0
        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);
            };
        }
예제 #2
0
        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.
                        // }
                    }
                }
            }
        }