Eigene ScrollBar für Eigenes ListControl..(Mein Kopf Raucht!)

  • VB.NET

Es gibt 33 Antworten in diesem Thema. Der letzte Beitrag () ist von Takafusa.

    Neu

    @Baa$ Zwischenbericht:
    Gib Deinen Events dieselben Parameter wie die .NET-Controls, da ist es wesentlich einfacher, von diesen auf Deine SchollBar umzusteigen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    @RodFromGermany
    Ja ich bin gerade dabei mich damit auseinander zusetzen... Eigentlich ging es mir nur darum eine Scrollbar für mein IPTV-Lists Control zu schreiben...
    Allerdings habe ich etwas rumgesurft und bei Java irgendwas interessantes gelesen von wegen adding to Container Controls... Dazu habe ich aber noch nichts in c# Oder VB.net gesehen... Aber habe auch nur etwas rumgesurft denke am Wochenende wenn ich nicht Arbeiten muss setze ich mich mit der Materie genauer Ausseinander... Öhm ja muss ich Mal schauen wie die Events in den .net Controls sind glaube irgendwie bei irgendwas mit R(Name vergessen aber Google findet schon).. kann man c# Microsoft sources einschauen... Ich halt euch auf dem laufenden hier

    Ich habe bisher nur nur dir CoreScrollBar Source von CodeProjekt.com gesehen... Wo ich nichts durch kapiert habe,... Durch ein Dokument auf irgendeiner Seite über ScrollBars wo stand was Large/Small Value.. etc... diese ergeben müssen habe es mir zusammen gewurschtelt...

    Neu

    Baa$ schrieb:

    adding to Container Controls
    Das passiert automatisch, wenn Du das Control im Designer auf Deine GUI ziehst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    Haha du hast schon Hart Trockenen Humor
    Was ich meine... Was ich bei Java gesehen hatte und eben auch gesehen habe das zum Beispiel Bunifu bei ihren ScrollBars eine Scrollbar.bindto -> Container Controls Funktion haben... So lässt sich die ScrollBars mit einem Easy Befehl in jedes Container Controls einbinden... ^^

    Neu

    Bei .NETZ ziehst Du das Control auf jedes Control, das Controls einbinden kann.
    Anders herum, aber iwie logisch besser.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    Baa$ schrieb:

    4.Seht ihr irgendwas was noch fehlt ?

    Sehen tu ich nix - ist mir zuviel Code zum sehen.
    Aber wenn du ein Testprojekt anhängst, kann mans mal auffn Prüfstand tun.
    Ich bezweifel nämlich, dass das Teil brauchbar funktioniert - Scrollbar-Logik ist anspruchsvoller als sie aussieht.
    (Aber ich kann natürlich auch irren.)

    Neu

    @ErfinderDesRadesnull Es ist ja noch nicht ganz fertig.. sobald ich zeit habe mache ich es zu ende.. Dann Poste ich Source, mit einer Test Projekt ;)
    ähm haha ihr seid ihr alle so mies Negativ Trocken ne... Herrlich :thumbsup:
    Lasset euch überraschen, Ü-Ei.. mäßig wird es werden! :D

    @RodFromGermany Ähm, glaube wir reden anneinander vorbei...
    schau mal was ich meine docs2.bunifuframework.com/docs/ui/controls/bunifu-scrollbars oder schau mal scrollbar to container controls bei google...
    das man das per drag and drop auf jedes beliebige control ziehen kann ist logisch und auch bei bunifu / Java & etc.. so allerdings muss man es dann noch einpflegen dies das jenes... so tut es dann von alleine... naja ist auch Leberkäse... Käse hat doch garkeine Leber!?? ?( :thumbsup: 8o

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Baa$“ ()

    Neu

    ErfinderDesRades schrieb:

    (Aber ich kann natürlich auch irren.)


    Ist jedenfalls mehr zu beachten als man erwartet. Hatte beim testen meiner ScrollBar die originalen Scrollbars in einem DataGridView neben den Originalen. Mit meiner kam ich immer viel zu früh beim scrollen bei der letzen Row an, wobei erst wenn der Thumb ganz unten war das Maximum erreicht war, wie man es erwartet. Ich hatte richtig gestaunt, das die originale ScrollBar nie das Maximum erreicht, hatte Minimum, Maximum und Value von den originalen übernommen. Musste dann den Bereich den der Thumb einnimmt, vom ganzen abrechnen. Ob das auch so ist wenn die ScrollBars auf einem anderen scrollbaren Control sind, muss ich noch mal probieren.

    @Baa$ Wollte mich zwar zurückhalten mit gutgemeinten Tipps, aber für andere könnten das eines Tages auch nützlich sein.
    Wegen Scrollbar.bindto schau dir mal DataBinding an. In meiner modifizierten DataGridView nutze ich meine ScrollBar über den Originalen, alles geht über Binding, im Event ControlAdded des DataGridViews, wenn eine HScrollBar oder VScrollbar hinzugefügt wurde, adde ich meine ScrollBar, füge die Bindungen hinzu.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Takafusa“ ()

    Neu

    @Takafusa
    Diggah danke für den Tip...
    Aber das was du zu Rod schreibst muss ich kurz was zu sagen!
    Hatte eben geschrieben das ich Testweise die V&Hscroll von Windows getestet habe... Und alter die Macht komplette Konfetti Schlacht aufeinmal aus meinem Verständnis für das Control musste echt hart überlegen ob Microsoft jetzt echt einen Bug hat oder ob ich evtl noch einmal in die Grundschule muss für Plus & Minus..
    Gottsei Dank ist seid 5.0 das Komplette .net meiner Meinung Hart verbuggt... Daher hab ich mich darauf besinnt das es an Microsoft 4.6 liegen muss... Einzigste was ich überlegt habe ob die Scalierung anders ist... Aber habe ich noch nicht weiter nachgeschaut trotzdem müssten die value 100 werden...
    Bilder
    • 16178068868716003385991409781536.jpg

      6,48 MB, 2.976×3.968, 74 mal angesehen
    • 1617806914681151159087878498633.jpg

      6,16 MB, 2.976×3.968, 8 mal angesehen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Baa$“ ()

    Neu

    Evtl. rechnest du mit falschen Datentypen. Ich rechne mit float, teste mal das. Wenn nun in einem Schritt der Berechnung so etwas passiert, kann das eine Ursache sein.

    C#-Quellcode

    1. Debug.WriteLine((int)(3 * 1.1f));


    Ausgabe wie zu erwarten 3, weil in dem Fall abgerundet wird.

    Neu

    Nene, das ist das ganz normale Windows HScroll... Habe nichts geändert nur Value in Label anzeigen lassen das war's.... Und ich mache alles mit Integer...

    Wollte es kurz zeigen... Um mehr ging es dabei nicht...

    Also irgendwie sind wir Grade wohl auch auf verschiedenen Bewusstseinsebenen hehe

    Weil sehe nicht was du meinst, selbst 100 abgerundet ist niemals 91... Und wenn Maximum = 100 ist und Minimum = 0 muss value von 0 bis 100 Ränge haben! Easy Peasy... So sollte es sein!

    Neu

    Achso die originale, wie ich sagte kein Maximum erreicht. Da aber beim DataGridView die letzte Zeile sichbar wird, wenn der Thumb ganz unten ist, ist das mit hoher wahrscheinlichkeit kein Bug sondern geplant. Wenn ich mich richtig erinner, habe ich das so glöst, die länge des Thumbs rechne ich in einen Wert um der Maximal auf dieser länge des Tracks erreich werden kann, das ziehe ich vom maximum ab. Wobei ich das Maximum nicht änder, meine ereicht also auch nie das Maximum. Sagte ja bereits, meine verhält sich wie die originalen, nur das meine Horizontal, wie auch Vertikal einsetzbar ist.

    Aber mit Net 5 hast du recht, total verbuggt. Hatte eines Tages versehendlich anstatt ein WinForms Net Framework, ein WinForms Net Projekt erstellt, der Designer ist totaler Mist. Wunderte mich dann warum der MenuStrip nicht wie erwartet gefüllt werden kann. Bin jetzt ein wenig verschreckt, was .net angeht(nicht Framework, das geilt).

    Wenn du deine ScrollBar auch für original scrollbare WinForms Controls einsetzen willst, täte ich das anpassen, wenn die nur für dein eigenes ListControl ist kannstes auch so lassen.

    Baa$ schrieb:

    Also irgendwie sind wir Grade wohl auch auf verschiedenen Bewusstseinsebenen hehe


    Ich meine das so, ist in einem Schritt der Berechnung eine Rundung drin, fehlt am ende was oder ist zu viel. Daher rechne ich mit floats manchmal auch double oder decimal, aber meistens ist mir float präzise genug, erst am Ende konvertiere ich bei der Zuweisung der Zielvariable/Property zu int.

    C#-Quellcode

    1. int max = 102;
    2. int var1 = 5;
    3. int var2 = 7;
    4. int res = max / var1; // hier wird schon gerundet, in der nächsten Zeile wieder. Führt zu ungenauigkeiten.
    5. res /= var2;
    6. Debug.WriteLine(res);


    @Baa$ Wenn du den Code ausführst, wrid 2 ausgegeben, rechne das aber mal mit einem Rechner, kommt etwa 2.9 raus, rechnet man mit float und macht zum schluss ein int draus kommt 3 raus, anstatt 2. Das meine ich genau.

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „Takafusa“ ()

    Neu

    Ja das habe ich schon, verstanden was du meintest...
    Ja entweder werde ich es mit Math.Round (hoffe war richtig, Habs Grade nicht im Kopf) oder Komplett ohne Runden Arbeiten... In meinem Kopf fliegen einige Gute Gute Ideen Rum... ich denke gegen 20:15 bin ich endlich Zuhause... Mal sehen ob ich noch Bock habe mich daran zusetzen später...

    Neu

    Baa$ schrieb:

    Math.Round


    Du brauchst doch einen int am Ende oder nicht? Math.Round gibt aber keinen int raus. Bei der Konvertierung von float zu int, wird automatisch gerundet. Brauchst du das Ergebnis als Gleitkommazahl, dann macht Math.Round Sinn, denn solch eine kommt zurück. Für diese Berechnungen hier, nicht nötig.

    Wenn du mal Math.Round in den MS-Docs anschaust, siehst du, es gibt mehrere Überladungen. Manch nehmen double oder decimal als Argument(auch in kombination mit weiteren Argumenten)

    Nimmste eine Überladung mit Decimal, kommt ein Decimal zurück, bei denen mit Double kommt double zurück.

    docs.microsoft.com/de-de/dotne…m.math.round?view=net-5.0

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Takafusa“ ()