vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
VB.net: RTB Icons werden erst sichtbar nachdem Text eingelesen ist 
Autor: Spawnie
Datum: 12.11.16 18:11

Hallo zusammen,

bei mir hat sich mal wieder eine neue Fragestellung aufgetan. Wie immer vorweg, ich bin kein Profi sondern exmperimentiere selbst immer wieder rum bis es klappt. Daher sind meine Lösungen vielleicht nicht immer sauber, aber am Ende tut es eben das was ich wollte. Meistens jedenfalls. Außerdem kanns sein, dass ich bei den Tipps nicht direkt mitkomme, daher schon mal ein SORRY an dieser Stelle.

Ok, um was geht es nun...
Ich habe eine Forms Anwendung die Text in einer Listbox generiert, verändert, ergänzt etc.
Eine LB habe ich deswegen genommen, weil das Handling vom Text für mich super ist. Zeilenbasiert, was einmal steht bleibt stehen usw. Zudem ist es nicht mal schlecht, dass man so von Werk aus den Text nicht befummeln kann, quasi als Schutz gegen versehentliche Änderungen.

Nun kam mir irgendwann die Idee: Naja Schutz ist ok, aber ein externer Editor wäre doch ganz cool für den Fall der Fälle. Und da bietet sich eine Richtextbox eben an.
Also habe ich einen "Editieren" Button eingefügt, eine neue Form und beim Click übergebe ich den Inhalt der LB in die RTB der neuen Form.
Dazu ein paar Knöpfchen wie "Abbrechen" falls ich es mir überlege, "Anwenden" um den Inhalt zurück in die LB aus der ersten Form zu schieben, "Undo" und Redo". Alles nichts wildes.

Soweit klappt alles super mit meinem Dummytexten. Nun habe ich aber mal die richtigen Texte genommen, die etwas länger sein können.
Auch hier klappt alles, aber das Handling ist nimmer so schön. Ich habe kein richtiges Problem sondern eher ein Problemchen optischer Natur.
Wenn ich meinen Editieren Button klicke geht die 2. Form auf. Man sieht wie der Text in die RTB flutscht über einige Sekunden hinweg - der Scrollbalken verändert die Größe. Das ist ja noch ok.
Aber alle Buttons wie "Anwenden" / "Abbrechen" / "Undo" / "Redo" sind erst mal nicht sichtbar sondern erscheinen erst wenn der Einleseprozess rum ist.

Wie gesagt, es ist ein rein optisches Problem.
Mir macht die Wartezeit von 5 oder 10 Sekunden nix aus, jedes Programm braucht seine Zeit zum arbeiten.
Was mich optisch stört ist die Tatsache, dass die Buttons nicht sichtbar sind so lange der Text lädt.
Kann ich da irgendwie die Priorisierung im Aufbau ändern, so dass erst die äußere Form mit den Buttons und dann der Text geladen wird?

Danke schon mal und viele Grüße
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB.net: RTB Icons werden erst sichtbar nachdem Text eingelesen ist 
Autor: Franki
Datum: 13.11.16 03:58

Spawnie schrieb:
Zitat:

Was mich optisch stört ist die Tatsache, dass die Buttons
nicht sichtbar sind so lange der Text lädt.
Kann ich da irgendwie die Priorisierung im Aufbau ändern, so
dass erst die äußere Form mit den Buttons und dann der Text
geladen wird


Hallo,

kommt darauf an, was die Buttons so machen sollen. Denn den Button für Editieren sichtbar bzw. benutzbar zu machen bevor der Text vollständig eingelesen ist macht keine Sinn da der User diesen ja dann benutzen könnte. Da müsstest du dann abfragen, ob der Text eingelesen ist oder nich.

Grundsätzlich ist es eine gute Idee dem User erst dann die Interaktivität anzubieten wenn die Grundlage dafür auch vorhanden ist. Und optisch gesehen weiß der User ja, dass wenn ein Button nicht sichtbar oder disabled ist, er damit noch nichts anfangen kann.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB.net: RTB Icons werden erst sichtbar nachdem Text eingelesen ist 
Autor: Manfred X
Datum: 13.11.16 06:25

Hallo!

Du schreibst zwar Einiges, lieferst aber kaum verwertbare Angaben.
Ich habe deshalb keine Ahnung, was und wie Du programmiert hast
und vermute, es handelt sich um ein Windows.Forms-Projekt.

Hier ein kleines Demo-Dialogformular für das Editieren
einer Stringliste:

(Das Dialog-Formular wird - der Einfachheit wegen - über das
X-Feld des Fensters oder per "Alt F4"-Tastenkombi geschlossen.)
Public Class frmEditList
 
    Dim WithEvents btnUndo As New Button With _
        {.Parent = Me, .Text = "UNDO", .Width = 100}
 
    Dim WithEvents btnRedo As New Button With _
        {.Parent = Me, .Text = "REDO", .Width = 100, .Left = 105}
 
    Dim rtb As New RichTextBox With _
        {.Parent = Me, .Top = 40, .Width = 400, .Height = 400, _
         .ScrollBars = RichTextBoxScrollBars.Both}
 
 
    Private Sub frmEditList_Load(sender As System.Object, _
                         e As System.EventArgs) Handles MyBase.Load
 
        Me.FormBorderStyle = _
           Windows.Forms.FormBorderStyle.Fixed3D
 
        Me.Size = New Size(410, 470)
    End Sub
 
 
    Public Property ListToEdit() As List(Of String)
        Set(value As List(Of String))
            Me.Refresh()
            rtb.Clear()
            rtb.Lines = value.ToArray
        End Set
        Get
            Return New List(Of String)(rtb.Lines)
        End Get
    End Property
 
 
    Private Sub btnRedo_Click(sender As Object, _
        e As System.EventArgs) Handles btnRedo.Click
        rtb.Redo()
    End Sub
 
    Private Sub btnUndo_Click(sender As Object, _
        e As System.EventArgs) Handles btnUndo.Click
        rtb.Undo()
    End Sub
End Class
Und hier ein Anwendungs-Formular mit Demo-Text:
(Der Text wird in eine Liste eingetragen, die an die Listbox
gebunden wird !!)
 Public Class frmEditListDemo
 
    Dim texte As New List(Of String)
 
    Dim WithEvents btnEdit As New Button With _
        {.Parent = Me, .Text = "Edit"}
 
    Dim lboText As New ListBox With _
        {.Parent = Me, .Width = 400, .Height = 400, .Top = 40}
 
 
    Private Sub frmEditListDemo_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
 
        Me.Size = New Size(410, 470)
        Me.DoubleBuffered = True 'eventuell
 
        'Demodaten
        For i As Integer = 0 To 1000
            texte.Add("Abschnitt " & (i + 1).ToString)
            texte.Add("Eine Textzeile ohne Informationsgehalt")
            texte.Add _
             ("Noch eine Zeile, die keine nützlichen Angaben enthält")
        Next i
 
        'Datenbindung erstellen
        lboText.DataSource = texte
    End Sub
 
 
    Private Sub btnEdit_Click(sender As Object, _
        e As System.EventArgs) Handles btnEdit.Click
 
        Me.Text = "Edit wird geöffnet ..."
        Me.Enabled = False
        Me.Refresh()
 
        'Edit-Dialog
        Using edit As New frmEditList
            'Liste an Edit-Form übergeben
            edit.ListToEdit = texte
 
            edit.ShowDialog()
 
            Me.Text = "Edit wird geschlossen ..."
            Me.Refresh()
 
            'Liste abfragen
            texte = edit.ListToEdit
        End Using
 
        'Datenbindung erneuern
        With lboText
            .SuspendLayout() 'eventuell
            .DataSource = texte
            .ResumeLayout()
        End With
 
        Me.Text = Me.Name
        Me.Enabled = True
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: VB.net: RTB Icons werden erst sichtbar nachdem Text eingelesen ist 
Autor: Spawnie
Datum: 13.11.16 10:28

Die Buttons sind ja nicht ausgeblendet oder disabled.

Dort wo sie sind ist einfach ein weißer Fleck und die Buttons kommen erst ran wenn der Text drüben in der RTB ist.

Ich hab jetzt im Button Click vom Editieren ein Me.Refresh() als ersten Eintrag und nun passt es.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel