2012-01-11 10 views
5

próbuję umieścić fajny mały obraz jak tenWindows.Forms SplitContainer.SplitterWidth nie pozostanie ustawiony przy starcie

one of these guys

Dla mojego dzielonym przyciskiem pojemnik przeciągania.

I wykonaj następujące czynności w OnPaint Event

private void splitContainer1_Paint(object sender, PaintEventArgs e) 
    { 
     var control = sender as SplitContainer;    

     e.Graphics.DrawImage("...".Properties.Resources.divider, control.SplitterRectangle, 0, 0, 1040, 50, GraphicsUnit.Pixel); 

    } 

Czyni narysować obraz jak chciałbym, problemem jest to, że wysokość jest zawsze 4 piksele. W projektancie ustawiłem SplitterWidth na 15, ale w czasie działania zawsze pozostaje on na poziomie 4. Tak więc, tylko 4 piksele faktycznie pojawiają się.

+0

To wydaje się niepotrzebnie gigantycznym obrazem splittera. Dlaczego potrzebujesz takiego, który jest ogromny? Czy to jest aplikacja z ekranem dotykowym? –

+0

To nie jest takie duże w aplikacji, piszę je do prostokąta jako 15 * 250. # 1. To jest obraz z graficznego projektanta, # 2, zapewnia, że ​​nic nie jest pikselowane. –

+0

Nie można go odtworzyć. Obraz utworzony w rozdzielczości 1040 x 50 przyciągnął 15 pikseli do mojego paska podziału. – LarsTech

Odpowiedz

7

Tak, według Twojego komentarza, mającego SplitterPanel wewnątrz TableLayoutPanel czyni środowisko wykonawcze zapomnieć ustawienie SplitterWidth, więc zrobiłem duplikat problemu. TableLayoutPanels to dziwne stworzenia.

jeszcze oczywiste obejście:

public Form1() { 
    InitializeComponent(); 
    splitContainer1.SplitterWidth = 15; 
} 
+0

Czy to była praca dla Ciebie? Ponieważ zrobiłem to w mojej metodzie malowania - która teraz myślę o tym jest dużo inna niż w moim konstruktorze. –

+0

Co więcej, ta sama linia kodu jest wywoływana w metodzie InitializeComponent(). –

+0

@ JonathanHenson Nie ustawiłbym właściwości podczas zdarzenia malowania. Moja linia kodu * po * 'InitializeComponent()' naprawiła problem. Jeśli nie, zawsze możesz przenieść go do zdarzenia 'Form1_Load()'. – LarsTech

0

Gdy kontrola pojemnik jest zagnieżdżony w innych kontroli pojemnika w projektanta, kontrola może być zagnieżdżona przeciągania upuszczone postaci pierwszego.

Na przykład, jeśli istnieje splitContaner1 (child) i panel1 (parent) do zagnieżdżenia w czasie projektowania, to splitContaner1 (który jest zagnieżdżony) musi zostać porzucony na formularzu. Po tym panelu nadrzędnym1. W końcu splitContaner1 musi zostać przeniesiony do panelu1.

Powiązane problemy