Visual Studio 2008 IDE nie wyświetla poprawnie Custom Controls

Mam problem w czasie projektowania ze wszystkimi moimi formularzami i niestandardowymi kontrolkami w Visual Studios 2008. Aż do poprzedniego zameldowania wszystkie formanty były renderowane zgodnie z oczekiwaniami. Jedyną główną różnicą między bieżącą wersją a poprzednią wersją roboczą była właściwość kontrolkiUIText został zmieniony zContent doValue. Pozostałe zmiany dodają nowy formularz i 3 nowe wyliczenia, ale z pewnością nie ma żadnej oczywistej zmiany, która wpłynęłaby na wszystkie formy w programie (w tym nowe).

Wszystkie elementy sterujące (na każdym formularzu) są teraz renderowane jako ramka z nazwą kontrolki (jednak wszystkie renderowane poprawnie w czasie wykonywania):

Próbowałem utworzyć zupełnie nowy formularz w moim projekcie, tworząc zupełnie nową niestandardową kontrolę z tylko etykietą, a ja wciąż mam dokładnie ten sam problem:

Zwróć uwagę, że standardowe formanty formularzy .Net działają poprawnie, więc jest to tylko problem z niestandardowymi kontrolkami.

Jeśli przywrócę poprzednią wersję z repozytorium, wszystko zacznie się poprawnie renderować ponownie:

Mogłem po prostu wrócić do tej działającej wersji i kontynuować, ale wolałbym wiedzieć, jak rozwiązać ten problem, gdyby wystąpił ponownie. Publikuję tutaj, mając nadzieję, że jest to problem programistyczny związany z wydaniem Visual Studios 2008 (tak na marginesie, SP1).

AKTUALIZACJA - Wykryto problem, nie można go wyjaśnić

I naprawiony problem. Naprawdę nie jest to właściwe słowo. Znalazłem problem, usuwając jednocześnie wszystkie formanty użytkownika 1, dopóki formularz nie zaczął poprawnie renderować. Problem był w mojej kontroli podpisu (który był obecny od wieków, tylko w moim ostatnim zameldowaniu dodałem odniesienie do projektuiVirtualDocket.CodeLibrary do głównego projektu:

<code>  iVirtualDocket
    - References iVirtualDocket.UIControls
    - References iVirtualDocket.CodeLibrary
  iVirtualDocket.UIControls
    -References iVirtualDocket.CodeLibrary
</code>

Podpis ma właściwość o nazwieSignatureData, który to robił:

<code>public byte[] SignatureData
{
    get
    {
        if (_signature == null)
        {
            return null;
        }
        else
        {
            return iVirtualDocket.CodeLibrary.Conversions.ImageToByteArray(
                _signature, ImageFormat.Png);
        }
    }
}
</code>

ImageToByteArray wygląda następująco:

<code>public static byte[] ImageToByteArray(Image imageToConvert,
        ImageFormat formatOfImage)
{
    byte[] ret;
    using (MemoryStream ms = new MemoryStream())
    {
        imageToConvert.Save(ms, formatOfImage);
        ret = ms.ToArray();
    }

    return ret;
}
</code>

Jeśli przeniosę powyższą metodę doUIControls projekt, wtedy wszystko działa dobrze. Jednak jak tylko przywrócę metodę doCodeLibrary projekt i wywołaj go tam, wszystkie moje formularze przestają wyświetlać UserControls.

Dlatego następujące czynności naprawiają problem, ale naprawdę chciałbym wiedzieć, dlaczego:

<code>public byte[] SignatureData
{
    get
    {
        if (_signature == null)
        {
            return null;
        }
        else
        {
            // Need to call this code directly here instead of through 
            // the CodeLibrary conversions, otherwise all user controls stop 
            // rendering in design mode
            byte[] ret;
            using (MemoryStream ms = new MemoryStream())
            {
                _signature.Save(ms, ImageFormat.Png);
                ret = ms.ToArray();
            }

            return ret;
        }
    }
}
</code>

(Co jeszcze bardziej dziwne, że nawet nie korzystam z tej właściwości.)

questionAnswers(2)

yourAnswerToTheQuestion