Подсказка Получить свойства от контроля - PullRequest
0 голосов
/ 15 мая 2019

Отображение всплывающей подсказки и получение значения свойства из элемента управления кастом.

У меня есть простой элемент управления ToolTip, но мне нужно показать в ToolTip значение из свойства элемента управления.

Например: TextBox show Tooltip с текстом, содержащимся в другом элементе управления.

В моем случае, у меня есть пользовательский элемент управления со следующими свойствами:

MyCustomPanel

(double)                 WinRate  = 53,4
(dobule)                 LoseRate = 13,2
(CustomToolTip Text)     "Team A"

Теперь, как восстановить свойство при переопределении подсказки Draw?

// Panel

public class PanelContainer : Control
    {
        public enum type
        {
            Top,
            Middle,
            Out,
            All
        }

        type tp = type.All;
        bool min = false;
        private double wrate = 0, brate = 0;

  [Category("Option")]
        public double WinRate
        {
            get { return wrate; }
            set { wrate = value; }
        }


        [Category("Option")]
        public double BanRate
        {
            get { return brate; }
            set { brate = value; }
        }


        [Category("Option")]
        public type LandType
        {
            get { return tp; }
            set { tp = value; Invalidate(false); }
        }

//more...
}


//Simple ToolTip

   public class MyToolTip: ToolTip
    {
        Color border = Color.FromArgb(123, 93, 41);
        Color symb = Color.FromArgb(200, 170, 109);

             public MyToolTip()
        {
            this.OwnerDraw = true;
            this.Popup += new PopupEventHandler(this.OnPopup);
            this.Draw += new DrawToolTipEventHandler(this.OnDraw);
            this.UseFading = true;
        }

        private void OnPopup(object sender, PopupEventArgs e) // use this event to set the size of the tool tip
        {
            e.ToolTipSize = new Size(200, 100);
        }

        private void OnDraw(object sender, DrawToolTipEventArgs e) // use this event to customise the tool tip
        {

            Graphics g = e.Graphics;
            g.SmoothingMode = SmoothingMode.HighQuality;    
            g.FillRectangle(new SolidBrush(Color.FromArgb(2,12,21)), e.Bounds);
            g.DrawRectangle(new Pen(new SolidBrush(symb)), 0, 0, e.Bounds.Width - 1, e.Bounds.Height - 1);
            SizeF sz = g.MeasureString(e.ToolTipText, e.Font);
            g.DrawString(e.ToolTipText, e.Font, new SolidBrush(Color.White), new PointF((e.Bounds.Width - sz.Width) / 2, 10));

//My Try whit Error
            g.DrawString(((Control)sender).Parent.GetType().ToString(), e.Font, new SolidBrush(Color.White), 50, 50);

        }

    }

Нужен хороший способ для примера розыгрыша:

g.DrawString(((MyPanel)sender).wrate.ToString(),e.Font,new SolidBrush(Color.White),50,50);

Невозможно привести объект типа 'PLib.MyToolTip' к типу 'System.Windows.Forms.Control'.

...