Отображение всплывающей подсказки и получение значения свойства из элемента управления кастом.
У меня есть простой элемент управления 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'.