.NET GUI

.NET Community für WPF, Silverlight und mehr!
Willkommen bei .NET GUI. Anmeldung | Registrieren | Hilfe | Impressum | Forumsregeln
in Suchen

Scrollbar verschwindet

Letzter Beitrag 03-09-2009 11:25 von Norbert Eder. 18 Antworten.
Seite 1 von 2 (19 Treffer) 1 2 > Weiter
Beiträge sortieren: Zurück Weiter
  • 03-03-2009 17:35

    • moe
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 12-17-2008
    • Ulm
    • Beiträge 34
    • Punkte 470

    Scrollbar verschwindet

    Hallo allerseits...

    Ich habe eine Applikation mit einem Splitcontainer
    Im linken Teil des Containers stelle ich einen Treeview dar, im rechten Teil werden die Daten (Formulare) angezeigt...

    Nun gibt es Formulare, die größer sind als das Panel (rechter Teil meines SplitContainers).
    Das Panel hat einen FIXE Größe, also AutoSize = false;
    Wenn ich nun ein Formular (TableLayoutPanel - größer ist als mein Splitcontainerpanel) hernehme und es auf das Splitcontainerpanel lege werden dank der AutoScroll = true; property des Splitcontainerpanels auch wunderbar meine Scrollbars angezeigt. Soweit sogut...!

    Es gibt jedoch Formulare, bei denen ich durch klicken eines "Plus"-Buttons (am Ende des Formulars) eine neue Zeile bzw eine neue Spalte einfügen/anzeigen lassen kann.

    Damit beim Laden und Anzeigen der neuen Zeilen/Spalten nicht die ganze Zeit das Bild "flackert" (bei jeder Änderung am TableLayoutPanel wird wohl das Bild aktualisiert), entferne ich mein LayoutPanel vom Container, bearbeite/erweitere es und zeig es anschließend wieder an, indem ich es auf mein Splitcontainerpanel setze...
    (Zwischenanmerkung: Muss ich so machen ?! Da ich mit der Visible property keinen erfolg hatte --> das Bild flackert trotzdem beim wieder sichtbar machen (visible = true) des TableLayoutPanels...!!!)

    Soweit fürs Verständnis...

    Nun zu meinem Vorgehen:
    - Formular wird angezeigt
    - ich verschiebe meine Scrollbar nach rechts
    - Hinten (rechts) am Formular ist der "plus"-Button
    - auf den klicke ich
    - Formular verschwindet
    - Formular wird wieder angezeigt mit zusätzlicher Spalte
    - Scrollbar ist wieder links angeordnet (wenn überhaupt vorhanden)
    - Formular ist aber auf der linken Seite abgeschnitten

    da jetzt die Scrollbar aber schon links anschlägt kann ich auch mein nun abgeschnittenes Formular nicht mehr anzeigen... doofe Sache das!!!

    mit "Formular ist abgeschnitten" mein ich, dass ich nur den Teil des Formulares sehe, den ich gesehen habe, BEVOR ich meinen Button geklickt habe, sprich: wenn ich meine Applikation im Fenstermodus (nicht Vollbild) gestartet habe, auf meinen Plus-Button klicke und dann das Fenster maximiere sehe ich (ohne Scrollbars jetzt) nur mein Formular in Größe des mir vorher angezeigten ausschnittes...

    Ich bitte um Hilfe. Die TableLayoutPanel-Größe und die fixe Splitcontainer-Größe hab ich schon zu Tode untersucht und debuggt...
    Das komische ist auch, wenn ich mein Formular eben zum ersten mal aufrufe werden die Scrollbars ganz normal angezeigt, weil das LayoutPanel ja größer ist als das Containerpanel... nach wegnehmen und wieder drauflegen sind die Scrollbars (obwohl Layoutpanel immer noch größer) weg oder eben das Bild abgeschnitten...

    P.S.
    Sry, ist sch*** schwer das einigermaßen erklärlich zu beschreiben was ich für ein Problem habe, ich sehs ja ;-)
    Abgelegt unter:
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-03-2009 20:23 Antwort zu

    • BFreakout
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 02-04-2009
    • Ingolstadt
    • Beiträge 119
    • Punkte 2.320
    • Moderator

    AW: Scrollbar verschwindet

    Hallo Moe,

    es ist für mich Schwer dein Problem zu verbildlichen. Kannst du dein Problem bitte etwas kürzer und sachlicher schildern?
    Eventuell bitte mit Screenshot und kurzen Source-Code dazu? Das würde uns um einiges die Analyse erleichtern.

    Viele Grüße BFreakout

    p.s. Welches .NET-Framework verwendest du? .NET 3.5 SP1 soll das Flackern etwas eindämpfen...

    DotNet-Blog.NET - Every day is an experience!, http://www.dotnet-blog.net

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-05-2009 8:37 Antwort zu

    • moe
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 12-17-2008
    • Ulm
    • Beiträge 34
    • Punkte 470

    AW: Scrollbar verschwindet

    Hallo,

    ersteinmal Danke für die Antwort.
    Das habe ich mir fast gedacht, dass das nicht so leicht wird ;-) war auch für mich schwer das verständlich zu erklären.

    Ich versuch es noch einmal:
    - ich starte meine Applikation im Fenstermodus (nicht maximiert, s. erstes Bild unten)
    - ich klicke in meinem Treeview auf der linken Seite auf ein Dokument
    - dieses wird mir dann im rechten Teil meiner Applikation angezeigt
    - wenn ich nun eine neue Spalte hinzufügen will klicke ich auf den "+"-Button am (rechten) Ende des Formulares
    - mein dargestelltes Dokument wird vom Panel genommen,
    - erweitert mit der neuen Spalte
    - und wieder angezeigt
    --> da hab ich dann das Problem
    Mein Dokument sieht nun so aus, als hätte ich vorher (vor dem Klick auf meinen Button) einen Screenshot gemacht hätte und die wird dann nachher angezeigt (hoffe mit den Bildern wird es klarer - s. weiter unten)

    Wegen des flackerns und dem SP1: Ich bin dummerweiße aufs 2er Framework angewiesen...!

    Das mit den Bildern direkt einbinden hier in meinem Text hat nicht so ganz funktioniert, deshalb nur die Links, sry!

    Das normale Dokument dargestellt


    nach dem Klick auf den Plusbutton wenn das Fenster MAXIMIERT ist.... oben links kann man erkennen, dass die Textbox abgeschnitten ist, die Scrollbar unten ist jedoch schon ganz nach links geschoben!


    ein ähnliches Problem tritt auf, wenn ich einen Eintrag in mein Formular setze und im Fenstermodus bin
    Ausgangssituation: Ich mach unten am Formular einen Eintrag - Formular wird vom Panel genommen (wegen des Flackerns) - bearbeitet/geändert - wieder angezeigt

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-05-2009 9:12 Antwort zu

    • BFreakout
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 02-04-2009
    • Ingolstadt
    • Beiträge 119
    • Punkte 2.320
    • Moderator

    AW: Scrollbar verschwindet

    Hallo Moe,

    jetzt hab ich schon ein besseres Bild bekommen Yes

    Kannst du noch den XAML-Code dazu Posten? Also was für die rechte Anzeige zuständig ist? Huh?

    Viele Grüße

    BFreakout

    > Wegen des flackerns und dem SP1: Ich bin dummerweiße aufs 2er Framework angewiesen...!
    Kannst ja ein kreuztest auf einem Virtuellem PC machen, wo das Aktuelle .NET-Framework Installiert ist,
    ob dann immer noch das Flackern kommt.. würde mich Interessieren ob es besser ist...

    DotNet-Blog.NET - Every day is an experience!, http://www.dotnet-blog.net

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-05-2009 9:33 Antwort zu

    • moe
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 12-17-2008
    • Ulm
    • Beiträge 34
    • Punkte 470

    AW: Scrollbar verschwindet

    ok, lokal kann ich das schon bei mir testen...! ;-)
    werd ich dann mal versuchen
    angewiesen bin ich deswegen nur, weil bei uns nicht jeder schon das 3er framework installiert hat!

    hier der code was passiert, wenn ich auf mein plus klicke:
    private void btnPlusRacking_Click(object sender, EventArgs e)
            {
                Button btnPlusRacking = (Button)sender;
                TableLayoutPanel tlp = (TableLayoutPanel)btnPlusRacking.Parent;

                // remove tablelayoutpanel from the right site panel
                splitContainerApp.PanelRight.Controls.Remove(tlp);

                // add talbelayoutpanel to right panel again
                splitContainerApp.PanelRight.Controls.Add(loadAdditional(Convert.ToInt32(btnPlusRacking.Name), tlp));
            }
    //--------------------------------------------------------------------------------------------------------------------------------------------------
    und das passiert in meiner methode:
    private TableLayoutPanel loadAdditionalRackingForms(int instance_id, TableLayoutPanel gridpanel)
            {
                //increment index
                plusclick++;

                gridpanel.ColumnCount += 3;

                // datatable with formular elements --> Hier lade ich meine Formularelemente aus einer Datenbank
                DataTable elementsTable = dbConnect.ElementsByInstance(instance_id);

                // run through the elements of the form
                for (int j = 0; j < elementsTable.Rows.Count; j++)
                {
                    string elementType = dbConnect.getElementType(Convert.ToInt32(elementsTable.Rows[j]["form_element_id"]));

                    switch (elementType)
                    {
                        case "label":
                            {
                                TextBox lbl = showLabel(elementsTable.Rows[j]);
                                gridpanel.Controls.Add(lbl, col, row);
                            }
                            break;

                        case "text-singleLine":
                            {
                                TextBox tboxSingleLine = showTextbox(elementsTable.Rows[j], instance_id);
                                gridpanel.Controls.Add(tboxSingleLine, col, row);
                            }
                            break;
                    }
                    // end building controls and databinding
                }

                return gridpanel;
          }
    //--------------------------------------------------------------------------------------------------------------------------------------------------

    in der showTextbox-Mehthode bzw der showLabel-Methode wird eigentlich nur eine neue Textbox/ein neues Label erzeugt, mit Text versehen und zurück gegeben...!!!
    ich weiß es ist schwer das alles über eine "Ferndiagnose" zu erörtern...

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-05-2009 9:50 Antwort zu

    • moe
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 12-17-2008
    • Ulm
    • Beiträge 34
    • Punkte 470

    AW: Scrollbar verschwindet

    bevor ich es vergesse nochmal zur erinnerung

    mein splitContainerApp.PanelRight hat eine FIXE GRÖßE (~.AutoSize = false;) und die Property AUTOSCROLL ist auf "true" gesetzt...
    mein tlp hat die KEINE FIXE GRÖßE (~.AutoSize = true;) und die Property AUTOSCROLL ist auf "false" gesetzt...

    heißt für mich, wenn tlp eine größere Größe hat als mein PanelRight dann müssen die Scrollbars erscheinen, ansonsten nicht...
    und nochmal erwähnt, ich habe es schon alles zu tode Debugt!!! Mein TLP ist AUCH DANN GRÖßER ALS MEIN PANELRIGHT, wenn mir die Scrollbars "verschwinden"

    Voodoo... sag ich da nur noch ;-) lasse mich aber auch gern vom Gegenteil überzeugen
    • Beitragspunkte: 5
    • IP-Adresse ist Registriert
  • 03-05-2009 9:52 Antwort zu

    • BFreakout
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 02-04-2009
    • Ingolstadt
    • Beiträge 119
    • Punkte 2.320
    • Moderator

    AW: Scrollbar verschwindet

    LOL... ich war voll bei WPF... du nutzt ja WinForms... Embarrassed

    schau mir gleich alles in ruhe an... +omg+

    DotNet-Blog.NET - Every day is an experience!, http://www.dotnet-blog.net

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-05-2009 10:02 Antwort zu

    • moe
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 12-17-2008
    • Ulm
    • Beiträge 34
    • Punkte 470

    AW: Scrollbar verschwindet

    ja, sooooooooooooooooo viel unterschied is da ja nicht :-D
    kein ding ;-)
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-05-2009 10:45 Antwort zu

    • BFreakout
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 02-04-2009
    • Ingolstadt
    • Beiträge 119
    • Punkte 2.320
    • Moderator

    AW: Scrollbar verschwindet

    ok, ist nicht einfach aber eventuell versuche mal folgendes:

    gridpanel.VerticalScroll.Value = True; <-- Neu dazu machen
    
    return gridpanel;
    

     

    Ich vermute du überschreibst vorherige Einstellungen, indem du ein neues Objekt von deinem Controll darüber legst.. aber ich bin mir nicht sicher...

    was mir ein bisschen zu denken gibt, ist der Aufbau deiner Methode. Du hast viel zu viele Logiken in einer Methode. Eine Faustregel besagt sogar, eine Methode darf nicht mehr als nur 1 Logik beinhalten. Damit sollte die abfrage deiner Formularelemente auf jeden Fall getrennt werden und die Generierung kann eigentlich stehen bleiben.

    Gebe also lieber ein fertiges DataTable anstatt eines instance_id als Parameter durch...

    Viele Grüße

    BFreakout

    DotNet-Blog.NET - Every day is an experience!, http://www.dotnet-blog.net

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-05-2009 11:12 Antwort zu

    • moe
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 12-17-2008
    • Ulm
    • Beiträge 34
    • Punkte 470

    AW: Scrollbar verschwindet

    naja, so viel logik und so komplex find ich das jetzt nicht Wink
    ich hab ja schon einiges ausgelagert... hättest es vorher mal sehen sollen... nightmare Devil

    mein gridpanel ist das tablelayoutpanel, dessen größe ja auf automatisch steht (autosize = true) deswegen wird das mit der gridpanel.verticalscroll wohl nicht funktionieren, aber ich versuchs mal für dich... Smile
    wenn ich nun die autosize auf false setze und dafür meine autoscroll = true bekomme ich ein kleines fensterchen auf meinem splitcontainer panel!!!

    also die scrollbars sollen beim splitcontainer-panel angezeigt werden... nicht beim tablelayoutpanel...!
    und nochmals ein kurzer hinweis: es spielt keine rolle, ob vertikal oder horizontal, das problem (wie in den bildern oben zu sehen ist) besteht bei beiden scrollbar-varianten! [:'(]



    • Beitragspunkte: 5
    • IP-Adresse ist Registriert
  • 03-05-2009 11:37 Antwort zu

    • moe
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 12-17-2008
    • Ulm
    • Beiträge 34
    • Punkte 470

    AW: Scrollbar verschwindet

    ich hab es gerade getestet, selbst wenn ich mein tablelayoutpanel eine fixe größe gebe und dort den autoscroll einschalte habe ich das gleiche problem... mein formular wird abgeschnitten!!! [:'(] gibts doch nicht...!!!
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-05-2009 12:56 Antwort zu

    • BFreakout
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 02-04-2009
    • Ingolstadt
    • Beiträge 119
    • Punkte 2.320
    • Moderator

    AW: Scrollbar verschwindet

    mmh.. denke es wird wirklich so ein Vodoo problem sein ;)

    allerdings muss es im Prozess hängen wo nach dem Klicken vom [+]-Button so etwas ausgelöst wird...

    DotNet-Blog.NET - Every day is an experience!, http://www.dotnet-blog.net

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-05-2009 13:08 Antwort zu

    • moe
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 12-17-2008
    • Ulm
    • Beiträge 34
    • Punkte 470

    AW: Scrollbar verschwindet

    könnte es sein, dass meine App sich die position links oben im eck des gerade angezeigten Formulares zwischenspeichert wird (wenn ich das layout panel von meiner anzeigen nehm) und dann es deswegen als "oberste ecke" definiert beim wieder aufs splitcontainerpanel legen?

    och menno... voodoo hilft mir nicht weiter Sad
    • Beitragspunkte: 5
    • IP-Adresse ist Registriert
  • 03-05-2009 16:33 Antwort zu

    • moe
    • Top 25 Mitwirkender
      Männlich
    • Registriert am 12-17-2008
    • Ulm
    • Beiträge 34
    • Punkte 470

    AW: Scrollbar verschwindet

    aber ich danke dir dennoch für deinen energischen einsatz und deine schnellen antworten Smile
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 03-07-2009 9:28 Antwort zu

    • Norbert Eder
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04-09-2008
    • Graz / Austria
    • Beiträge 980
    • Punkte 14.949
    • ForumsAdministrator

    AW: Scrollbar verschwindet

    Answer

    Hallo Moe,

    Sofern ich das bis jetzt richtig verstanden habe sind da folgende Issues:

    • Beim Hinzufügen eines neuen Dokumentes flackert es
    • Daher nimmst du das Control aus dem Container-Objekt heraus
    • Spalten + Felder werden hinzugefügt
    • Dokument wird dem Container hinzugefügt
    • Scrollbars passen nun nicht mehr

    Ist das so korrekt?

    Das Flackern kannst du so verhindern: Nimm das Dokument nicht aus deinem Container-Element heraus, sondern rufe am Container-Element vor der Aktualisierung SuspendLayout auf. Dann die Aktualisierung und anschließend ResumeLayout. Beim ResumeLayout wird das Control neu gerendert. Wenn du dies so machst, besteht dann immer noch das Problem mit den Scrollbars?

    Wenn ja: Schau dir mal die Größe des Container-Elements an: Eventuell verändert sich dieses und es sind dadurch keine Scrollbars mehr sichtbar. In dem Fall würde es sich anbieten, das Container-Element an das Fenster zu docken, damit es immer zur Gänze im sichtbaren Bereich ist und dadurch der Content zu scrollen beginnt.

    Ich hoffe, das hilft dir weiter.

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
Seite 1 von 2 (19 Treffer) 1 2 > Weiter
Powered by Community Server (Commercial Edition)    69° - Internet-Agentur München (CMS, ASP.NET, Webdesign)