Я использую CAB и Infragistics в приложении winforms, в форме у меня есть несколько сплиттеров и пользовательских элементов управления с сетками, кнопками, метками ... внутри этих сплиттеров, когда форма открывается во время выполнения, пользовательские элементы управления не отображаются правильно, эта проблема известна для win7 x64, как описано здесь элементы управления внутри проблемы рисования Split Container в Windows 7 и здесь эта архивная ссылка из кэша веб-сайта фабрики компонентов . Обходной путь, предоставленный в вышеупомянутых темах, состоит в переопределении метода OnSizeChanged:
protected override void OnSizeChanged(EventArgs e)
{
if (Handle != null)
BeginInvoke((MethodInvoker)delegate
{ base.OnSizeChanged(e); });
}
проблема с этим решением при использовании CAB, когда этот метод вызывается при инициализации компонентов формы из конструктора (InitializeComponent вызывается из конструктора), а метод OnLoad вызывается при обращении к свойству Handle, поскольку оно создается, если его значение равно нулю,
protected override void OnLoad(EventArgs e)
{
_presenter.OnViewReady();
base.OnLoad(e);
}
Здесь _presenter еще не установлен, его значение равно нулю и выбрасывается осевая точка.
Что я могу сделать для этой проблемы?
С уважением.