none
Scrollbar erstellen RRS feed

  • Frage

  • Hallo,

     

    Ich habe ein programm welches mir eine bitmap erstellt und diese in einer windows form ausgibt.

    Ist diese bitmap größer als der bereich der angezeigt werden kann so  möchte ich eine scrollbar, lösung eins war via "autoscroll"das funktioniert aber nur

    bis zu dem punkt an dem ich die form verkleinere den die scrollbar bleibt gleich groß also erstreckt sich immernoch über den ganzen bildschirm und wird abgeschnitten.

     

    Wie kann ich nun eine scrollbar manuell erstellen welche sich automatisch der windows form größe ( in diesem fall heißt die form "frm_organigramm" und das pannel heit "pnl_main" ) anpasst ?

     

     

    mfg

    Montag, 20. September 2010 13:21

Alle Antworten

  • Hallo r3dshad,

    verfrachte die PictureBox einfach in ein Panel und setzte die Eigenschaft "AutoScroll" des Panels auf "true". Danach werden die Scrollbars bei Bedarf angezeigt.

    Viele Grüße

    Holger M. Rößler

    • Bearbeitet Holger M. Rößler Montag, 20. September 2010 14:09 Vertipper
    • Als Antwort vorgeschlagen Elmar Boye Dienstag, 21. September 2010 08:23
    Montag, 20. September 2010 14:09
  • Hallo,

    leider mache ich das bereits:

    Panel pnl_main = new Panel();
    .....
    pnl_main.Controls.Add(picOrgChart);
    .....
    if (pnl_main.Height < content_height || pnl_main.Width < content_width)
    	{
    	pnl_main.AutoScroll = true; 
    	}
    

     

    Funktioniert aber leider nicht verkleinere ich das fenster so bleibt der scrollbalken auf maximaler bildschirmbreite und wird abgeschnitten.

    Dienstag, 21. September 2010 12:09
  • Hallo,

    setzte bitte mal die AutoScroll-Eigenschaft gleich nach dem erzeugen des Panels auf true.

    Panel pnl_main = new Panel();
    pnl_main.AutoScroll = true; //<-- Hier bereits auf true setzen
    .....
    pnl_main.Controls.Add(picOrgChart);
    
    

    Evtl. könntest du zum besseren Verständnis auch mal hier reinschauen: http://msdn.microsoft.com/de-de/library/system.windows.forms.scrollablecontrol.autoscroll.aspx

    Viele Grüße

    Holger M. Rößler

    Dienstag, 21. September 2010 13:43
  • Auch wenn ich es direkt danach auf true setze schneider er beim neuen skallieren der form den scrollbalken ab.
    Mittwoch, 22. September 2010 12:45
  • Hi,

    hast du irgendwelche Programme im Hintergrund laufen, die die Darstellung beeinflußen wie z.B. UltraMon? Ein solches könnte nämlich auch dein zweites Problem (mit dem "einrasten" den Fensters) verursachen.

    Viele Grüße

    Holger M. Rößler

    Mittwoch, 22. September 2010 13:26
  • Nein im hintergrund läuft nichts anderes.

     

    Mittwoch, 22. September 2010 13:51
  • Hi,

    dann verwende bitte mal anstelle eines Panels ein FlowLayoutPanel. (http://msdn.microsoft.com/de-de/library/system.windows.forms.flowlayoutpanel_members(v=VS.80).aspx)

    Viele Grüße

    Holger M. Rößler

    Donnerstag, 23. September 2010 10:02
  • Schneidet leider immernoch ab. Wenn ich die Windows form skaliere wird zwar das Fenster vond er größe her verändert und die anderen pannel aber pnl main und der scrollbalken bleiben genau so wie sie úrsprünglich wahren.

      pnl_main.Width = frm_Organigramm.Width - 25;
      pnl_main.Height = frm_Organigramm.Height - Speichern.Height - 2 - 96;
      pnl_main.Top = Speichern.Height + 2;
      pnl_main.Left = (frm_Organigramm.Width - pnl_main.Width) / 2;
      
      frm_Organigramm.Height - Speichern.Height - 2 - 96);
      pnl_main.MaximumSize = new Size(w - 25, frm_Organigramm.Height - Speichern.Height - 2 - 96);
      pnl_main.MinimumSize = new Size(775, frm_Organigramm.Height - Speichern.Height - 2 - 96);
      pnl_main.AutoSize = true;
      pnl_main.AutoSizeMode = AutoSizeMode.GrowAndShrink;

     

    Hier werden einige größen festgelegt frm_Organigramm ist der name der Form. Vllt stimmt damit irgendetwas nicht oder deshalb entstehen konflikte ?
    Donnerstag, 30. September 2010 11:12