Привет.
Народ, кто встречался со следующей проблемой: есть аддон, написанный при помощи VSTO 2005 SE (Visual Studio Tools 2005 for Office Second Edition) к аутлуку — это 1я сборка.
Есть сборка с формой — пусть это 0я сборка.
И есть сборка — экзешник — соответственно, 3я.
На форме, которая в 0й сборке, есть ComboBox. Он OwnerDrawFixed.
Там рисуются иконки из подгружаемого в этой же сборке списка изображений.
Так вот:
Если я запускаю сборку 3, и из неё создаю форму из сборки 0, то всё работает отпадно, как и должно быть.
А вот если я создаю ту же форму из аддона к аутлуку (1й сборки), то прорисовывается всё немного странно, а именно:
Если нажать стрелку у ComboBox'а, то ни у одного элемента не будет прорисована картинка, хотя текст и выделение будут.
Если не нажимать стрелку (т.е. в самом ComboBox'е в закрытом состоянии) картинка появляется только после того, как ComboBox потеряет фокус или юзер подвинет на него мышь (!!!!)
Таких глюков давно не видел.
Кто сталкивался с подобным, прошу помощи.
P.S. эксепшенов Graphics.DrawImage никаких не выбрасывает, всё выглядит будто он что-то таки нарисовал там.
В догонку вышлю код обработчика DrawItem:
ImageList imgNodes;
private void lstElementType_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
if (e.Index != -1)
{
Rectangle rcText = e.Bounds;
rcText.X += imgNodes.ImageSize.Width + 2;
using (Brush textBrush = new SolidBrush( e.ForeColor ))
using (StringFormat format = new StringFormat())
{
format.Alignment = StringAlignment.Near;
format.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString( (string) lstElementType.Items[ e.Index ], e.Font, textBrush, rcText, format );
}
Point ptIcon = e.Bounds.Location;
ptIcon.Offset( 1, 1 );
e.Graphics.DrawImage( GetImage( possibleNodeIDs[ e.Index ] ), ptIcon );
}
e.DrawFocusRectangle();
}