Próbuję dostać się z linii # 1 do # 2 linii w kodzie poniżej:Ani Invalidate() ani Refresh() wywołuje OnPaint()
using System;
using System.Windows.Forms;
namespace MyNameSpace
{
internal class MyTextBox : System.Windows.Forms.TextBox
{
protected override void OnEnabledChanged(EventArgs e)
{
base.OnEnabledChanged(e);
Invalidate(); // Line #1 - can get here
Refresh();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
System.Diagnostics.Debugger.Break(); // Line #2 - can't get here
}
}
}
Wydaje się jednak, że neiter Invalidate() ani Refresh() powoduje wywołanie OnPaint (PaintEventArgs e). Dwa pytania:
- Dlaczego to nie działa?
- Jeśli nie można go naprawić: chcę tylko wywołać OnPaint (PaintEventArgs e) w celu uzyskania dostępu do obiektu e.Graphics - czy jest jakiś inny sposób na zrobienie tego?
Wielkie dzięki, SLC! Robię to jako zaakceptowaną odpowiedź. – user181813