Hi Ihr,
mein Proggi steht und läuft auch dank Eurer Hilfe inzwischen wunderbärchen.
Nur drei Probleme nagen noch an dem Eigenstolz:
1. Wenn ich in meiner TreeView mit Inhalt Ordnerstruktur z.B. im afterlabeledit :
nach dem Reaktivieren des FSW in der letzten Zeile die Sub "CreateTRVFolders" zum Neueinlesen der TRV-Ordnerstruktur (wegen der Sortierung nach Umbenennen oder Neuanlegen eines Knotens) einfüge, erhalte ich einen Fehler.
Wohl, weil ich damit noch in der afterlabelEdit drin bin.
Wie kann ich aber dann nach dem erfolgreichen AfterLabelEdit meine TRV neu einlesen lassen?
2. Ich habe ja ein Dark-Theme, in welchem die Hintergrundfarben (fast) aller Controls dunkel gefärbt werden. Ausnahme DateTimePicker - die ignorieren die Zuweisung der Hintergrundfarbe.
Bei der Combobox gelingt mir das Setzen der Hintergrundfarbe nur, wenn ich deren DropDownStyle auf DropDown stelle. Bei DropDownList ignoriert die Combobox die Hintergrundfarbzuweisung.
Dummerweise heisst DropDown aber, dass der Anwender Text in die Combo eingeben kann - was ich aber nicht will.
Also sperre ich mit:
alle Eingaben ausser CursorUp/Down und Enter.
Nur... So werden die Textinhalte der Combos selektiert, da diesem Combobox-Text ja ein existierender Combobox-Listen-Eintrag entspricht, was ich aber auch nicht will.
Kann ich diese Selektion irgendwie unterdrücken?
3. Ich befülle meine Datagridviews in einer Schleife mit:
Vor der Schleife habe ich dgv_suchergebnisse.suspendlayout und nach der Schleife dgv_suchergebnisse.resumelayout
Das funktioniert aber nur, wenn ich auf das Icon in Spalte 1 verzichte.
Dann werden die Inhalte der DGV erst angezeigt, wenn die Schleife komplett abgearbeitet ist.
Mit eingefügtem Icon wird aber trotz SuspendLayout die DGV sichtbar Zeile für Zeile aufgebaut und aktualisiert.
Kann ich das irgendwie mit dem Einbinden der Icons in Spalte 1 so hinbekommen, dass die DGV erst nach Durchlauf der Schleife aufgebaut wird?
Ich verspreche mir davon eine schnellere Abarbeitung der Schleife.
Wäre toll, wenn Ihr mir hier helfen könntet.
Dann wäre ich rundum happy mit meinem ersten VB.Net-Proggi.
Beste Grüsse
mein Proggi steht und läuft auch dank Eurer Hilfe inzwischen wunderbärchen.
Nur drei Probleme nagen noch an dem Eigenstolz:
1. Wenn ich in meiner TreeView mit Inhalt Ordnerstruktur z.B. im afterlabeledit :
VB.NET-Quellcode
- Private Sub Trv_Folders_AfterLabelEdit(sender As Object, e As NodeLabelEditEventArgs) Handles trv_Folders.AfterLabelEdit
- If IsDBNull(e.Label) <> True AndAlso e.Label IsNot Nothing AndAlso e.Label <> "" AndAlso e.Label.ToLower <> letzterOrdnerAusPfad(OrdnerPfad).ToLower Then
- If Not CheckFoldername(e.Label) Then
- Dim form_fehler As New ICE_Eingabe
- form_fehler.Initialisiere(False, "ICE-Fehler!", "Unzulässige(s) Zeichen im Ordnernamen!" & vbCrLf & vbCrLf & Chr(34) & e.Label & Chr(34), MessageBoxButtons.OK, 8)
- trv_Folders.SelectedNode.Text = oldFolderName
- e.Node.BeginEdit()
- Else
- If IO.Directory.Exists(IO.Path.Combine(PfadOhneOrdnerpfad(OrdnerPfad), e.Label)) = True Then
- Dim form_fehler As New ICE_Eingabe
- form_fehler.Initialisiere(False, "ICE-Fehler!", "Der Ordner:" & vbCrLf & vbCrLf & Chr(34) & e.Label & Chr(34) & vbCrLf & vbCrLf & "existiert bereits in:" & vbCrLf & vbCrLf & OrdnerPfad, MessageBoxButtons.OK, 8)
- trv_Folders.SelectedNode.Text = oldFolderName
- e.Node.BeginEdit()
- Else
- Try
- e.Node.EndEdit(False)
- If doFullOrdnerRename(OrdnerPfad, e.Label) = True Then
- Dim parentPfad = IO.Directory.GetParent(OrdnerPfad)
- OrdnerPfad = IO.Path.Combine(parentPfad.FullName, e.Label)
- trv_Folders.SelectedNode.Text = e.Label
- inEditListe = False
- e.CancelEdit = True
- End If
- Catch ex As System.Exception
- Dim form_exclamation As New ICE_Eingabe
- form_exclamation.Initialisiere(False, "ICE-Fehler!", "Der Ordner:" & vbCrLf & vbCrLf & Chr(34) & letzterOrdnerAusPfad(OrdnerPfad) & Chr(34) & vbCrLf & vbCrLf & "kann nicht in:" & vbCrLf & vbCrLf & Chr(34) & e.Label & Chr(34) & vbCrLf & vbCrLf & "umbenannt werden!" & vbCrLf & vbCrLf & "Grund: " & ex.Message, MessageBoxButtons.OK, 4)
- trv_Folders.SelectedNode.Text = e.Label
- e.Node.BeginEdit()
- End Try
- End If
- End If
- Else
- If trv_Folders.SelectedNode IsNot Nothing Then
- trv_Folders.SelectedNode.Text = oldFolderName
- End If
- e.CancelEdit = True
- End If
- FileWatcherSwitch(True)
- End Sub
nach dem Reaktivieren des FSW in der letzten Zeile die Sub "CreateTRVFolders" zum Neueinlesen der TRV-Ordnerstruktur (wegen der Sortierung nach Umbenennen oder Neuanlegen eines Knotens) einfüge, erhalte ich einen Fehler.
Wohl, weil ich damit noch in der afterlabelEdit drin bin.
Wie kann ich aber dann nach dem erfolgreichen AfterLabelEdit meine TRV neu einlesen lassen?
2. Ich habe ja ein Dark-Theme, in welchem die Hintergrundfarben (fast) aller Controls dunkel gefärbt werden. Ausnahme DateTimePicker - die ignorieren die Zuweisung der Hintergrundfarbe.
Bei der Combobox gelingt mir das Setzen der Hintergrundfarbe nur, wenn ich deren DropDownStyle auf DropDown stelle. Bei DropDownList ignoriert die Combobox die Hintergrundfarbzuweisung.
Dummerweise heisst DropDown aber, dass der Anwender Text in die Combo eingeben kann - was ich aber nicht will.
Also sperre ich mit:
VB.NET-Quellcode
- Private Sub Mnu_TextEditor_cob_TextEncoding_KeyDown(sender As Object, e As KeyEventArgs) Handles mnu_TextEditor_cob_TextEncoding.KeyDown, sym_TextEditor_Format_cob_Schriftart.KeyDown, sym_TextEditor_Format_cob_Schriftgrösse.KeyDown
- Select Case e.KeyCode
- Case Keys.Down, Keys.Up
- Case Else
- e.SuppressKeyPress = True
- End Select
- End Sub
alle Eingaben ausser CursorUp/Down und Enter.
Nur... So werden die Textinhalte der Combos selektiert, da diesem Combobox-Text ja ein existierender Combobox-Listen-Eintrag entspricht, was ich aber auch nicht will.
Kann ich diese Selektion irgendwie unterdrücken?
3. Ich befülle meine Datagridviews in einer Schleife mit:
VB.NET-Quellcode
- Dim icon As Icon = Icon.ExtractAssociatedIcon(fInfo.FullName)
- If oDateiart > 8 Then
- icon = My.Resources.Schlüssel
- End If
- If icon IsNot Nothing Then
- resizedIcon = MainForm.ResizeIcon(icon, CInt(dgv_Suchergebnisse.Font.Size + 10), CInt(dgv_Suchergebnisse.Font.Size + 10))
- End If
- fileDetail = My.Computer.FileSystem.GetFileInfo(fInfo.FullName)
- dgv_Suchergebnisse.Rows.Add(resizedIcon,
- IO.Path.GetFileName(fInfo.FullName),
- MainForm.OrdnerPfadOhneArchiv(MainForm.aktivesArchivPfad, IO.Path.GetDirectoryName(fInfo.FullName)),
- MainForm.DateiEndungTypBezeichnung(LCase(IO.Path.GetExtension(fInfo.FullName))),
- fileDetail.LastWriteTime,
- fileDetail.LastAccessTime,
- fileDetail.CreationTime)
Vor der Schleife habe ich dgv_suchergebnisse.suspendlayout und nach der Schleife dgv_suchergebnisse.resumelayout
Das funktioniert aber nur, wenn ich auf das Icon in Spalte 1 verzichte.
VB.NET-Quellcode
- fileDetail = My.Computer.FileSystem.GetFileInfo(fInfo.FullName)
- dgv_Suchergebnisse.Rows.Add(IO.Path.GetFileName(fInfo.FullName),
- MainForm.OrdnerPfadOhneArchiv(MainForm.aktivesArchivPfad, IO.Path.GetDirectoryName(fInfo.FullName)),
- MainForm.DateiEndungTypBezeichnung(LCase(IO.Path.GetExtension(fInfo.FullName))),
- fileDetail.LastWriteTime,
- fileDetail.LastAccessTime,
- fileDetail.CreationTime)
Dann werden die Inhalte der DGV erst angezeigt, wenn die Schleife komplett abgearbeitet ist.
Mit eingefügtem Icon wird aber trotz SuspendLayout die DGV sichtbar Zeile für Zeile aufgebaut und aktualisiert.
Kann ich das irgendwie mit dem Einbinden der Icons in Spalte 1 so hinbekommen, dass die DGV erst nach Durchlauf der Schleife aufgebaut wird?
Ich verspreche mir davon eine schnellere Abarbeitung der Schleife.
Wäre toll, wenn Ihr mir hier helfen könntet.
Dann wäre ich rundum happy mit meinem ersten VB.Net-Proggi.
Beste Grüsse