| |
VB.NET - Ein- und UmsteigerVB.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 | |
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 | |
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 | |
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. | |
| 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 |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|