OpenfileDialog schneidet Dateiname ab

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Alberner_Helge.

    OpenfileDialog schneidet Dateiname ab

    Hallo zusammen,

    tolles Forum - ich habe schon viel von Euch gelernt :)

    Meine Frage:

    Ich verwende Openfiledialog um eine Excel-Datei zu öffnen und übergebe einen Default Wert für Ordner und Dateiname:


    VB.NET-Quellcode

    1. Private Sub Button_Settings_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Settings.Click
    2. Dim openFileDialog1 As New OpenFileDialog()
    3. Dim Excelfile_neu As String = ""
    4. With openFileDialog1
    5. .InitialDirectory = "C:\Users\FG4WDDA\Desktop\PRL2.0"
    6. .FileName = "Excel_Datei_mit_langem_Namen.xlsx"
    7. .Filter = "Erprobungsrichtlinie | *.xls;*.xlsx"
    8. End With
    9. If openFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
    10. Excelfile_neu = openFileDialog1.FileName
    11. If Excelfile_neu <> Excelfile Then
    12. lines(0) = Excelfile_neuSystem.IO.File.WriteAllLines(Inifile, lines)
    13. MsgBox("Änderungen werden nach Programm-Neustart übernommen.")
    14. End If
    15. End IfEnd Sub


    Die Ausgabe des Dateinamens sieht aber so aus: =>Anhang

    Warum wird der Dateiname abgeschnitten und wie kann ich das ändern?

    Danke...
    Bilder
    • ausgabe.jpg

      104,76 kB, 770×721, 152 mal angesehen
    Drück bei dieser Ansicht mal die Taste "Pos1" und schau was passiert. Stelle im Zweifelsfall vorher sicher, dass der Fokus wirklich auf dem Eingabefeld für den Dateinamen steht, z.B. indem du einmal mit der Maus reinklickst.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    "dargestellt"... ganz genau. Es ist nämlich nur ein Darstellungs"fehler". Weil der Name zu lang ist, rutscht der Inhalt der TextBox beim "Vorabselektieren" des Inhalts nach vorne (um die Einfügemarke am Ende der Selektierung anzeigen zu können), d.h. der Inhalt wird eigentlich "gescrollt" obwohl da gar kein Scrollbalken ist. Durch Ändern der Einfügemarke (du verschiebst sie wieder an den Anfang) machst du das manuell rückgängig. Ob und wie man das "automatisch" hinbekommt weiß ich nicht, hab ich mich noch nie drum gekümmert, dürfte aber angesichts dessen, dass der OpenFileDialog eine sealed Klasse ist, nicht gerade einfach werden.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.

    Alberner_Helge schrieb:

    weiß jemand Rat?
    Gib kürzere Namen vor.
    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!
    du kannst mit ner kleinen zusatzfunktion auf die controls der dialoge zugreifen. denn der dialog ist im endeffekt genauso aufgebaut wie eine userform. wenn du das control "textbox" aus der auflistung der dialogcontrols selektieren kannst, kannst du der textbox eigenschaften zuweisen um das "scrollen" zu verhindern.
    das ganze wird aber etwas aufwändiger. ich hab mal was ähnliches gemacht mit nem printpreviewdialog. da hab ich in die menüleiste einen zusätzlichen button eingefügt.
    hier haste mal den code dazu. wenn de den etwas abänders kannste auch deine textbox bearbeiten.

    VB.NET-Quellcode

    1. Private Sub GetControlsFromDialog(sender As Object, e As EventArgs) Handles PrintPreviewDialog1.Shown
    2. If PDFirstLoad = True Then
    3. Dim ts As ToolStrip = CType(PrintPreviewDialog1.Controls(1), ToolStrip)
    4. Dim PrintButtonItem As ToolStripItem = ts.Items("printToolStripButton")
    5. With PrintButtonItem
    6. Dim MyPrintButtonItem As ToolStripItem
    7. MyPrintButtonItem = ts.Items.Add(.Text, .Image, New EventHandler(AddressOf Me.PrintDialog_Show))
    8. MyPrintButtonItem.DisplayStyle = ToolStripItemDisplayStyle.Image
    9. ts.Items.Insert(0, MyPrintButtonItem)
    10. End With
    11. ts.Items.Remove(PrintButtonItem)
    12. Dim MyPageSetupItem As ToolStripItem
    13. MyPageSetupItem = ts.Items.Add("Seite einrichten", Ico, New EventHandler(AddressOf Me.PageDialog_Show))
    14. MyPageSetupItem.DisplayStyle = ToolStripItemDisplayStyle.Image
    15. ts.Items.Insert(2, MyPageSetupItem)
    16. PDFirstLoad = False
    17. Else
    18. Exit Sub
    19. End If
    20. End Sub


    den firstload musst du überwachen, weil die änderung für die laufzeit des hauptprogramms gespeichert wird. du würdest sonst die änderung mehrfach durchführen wollen, was zum fehler führt.
    sinnvoll währe textbox1.textalign=right und textbox1.wordwrap=false.

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

    Vielen Dank.

    Das wird mir dann aber doch zu umfangreich. Ich werde einfach den Dateinamen vorher anzeigen und den Öffnen Dialog nur starten, wenn wirklich eine neue Datei geöffnet werden soll. Dann muss ich auch keinen Default mehr übergeben...