Announcement

Collapse
No announcement yet.

informationen von dateien anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • informationen von dateien anzeigen

    guten morgen
    ich hab da mal wieder ein problemchen...


    ich habe meine dateien in einer listview und möchte wenn ich durch ein contextmenuitem drauf klicke infos wie größe änderungsdatum oder den pfad in einer textdatei oder ähnlichem angezeigt bekommen
    wie bekomme ich das hin?

    danke schonmal
    C# bringt mich noch um den Verstand

  • #2
    Hallo,

    wie oder womit sollen die Informationen angezeigt werden ?
    Für das womit könnte der Namensraum System.IO und die Klasse FileInfo weiterhelfen.
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment


    • #3
      Hallo,

      du meinst, in der ListView stehen die Dateinamen, oder? Die Informationen bekommst du durch die FileInfo-Klasse (aufpassen: nicht Size, sondern Length - was die sich bei dieser Benennung gedacht haben).

      Wo bzw. wie sollen die Informationen angezeigt werden? Wenn du auf dem Formular keine zusätzlichen Labels haben willst und dir auch ToolTip nicht gefällt, könntest du ein eigenes Formular ohne Rahmen machen, das TopMost angezeigt wird und sich per Timer nach ca. 5 Sekunden verabschiedet.

      Gruß Jürgen

      PS. Da Markus ähnliche Nachfragen hat, solltest du dir angewöhnen, dich mehr in die Lage der Leser zu versetzen, sodass wir von vornherein wissen, was du willst.

      Comment


      • #4
        also die infos sollten denn eig in einer textdatei oda messagebox angezeigt werden
        obwohl ein modaler dialog bestimmt besser wäre...(aba soweit wollt ich eig noch nich gehn)

        also ich lese die dateien mit directoryInfo in eine treeview und lasse mir sie dann wenn man drauf klickt in die listview schreiben
        diese enthält auch schon ein paar infos in columns
        dort natürlich durch fileinfo angezeigt...
        aber wollte sie eben noch extra durch ein klick ereignis gebündelt angeben lassen

        so mein problem ist jetz weiß nicht wie ich es hin bekomme das er die infos nimmt und sie dann in die messagebox oder ähnliches schreibt oder sich eben die infos neu nimmt und da rein schreibt
        C# bringt mich noch um den Verstand

        Comment


        • #5
          ich würde dir die gleiche vorgehensweise wie zuvor (also beim anzeigen des dateiinhaltes) empfehlen. Im Eventhandler den Pfad der Datei aus der z.B Tag-Eigenschaft holen und diesen Pfad einer Methode übergeben die sich dann mithilfe der FileInfo-Klasse um die Ausgabe der Datei-Informationen in eine Messagebox kümmert

          Comment


          • #6
            Ok ich hab das jetz so

            [highlight=c#]
            FileInfo fi = new FileInfo(file1);
            string info = fi.Name;
            info1 = fi.Length;
            string info2 = fi.Extension;
            //info3 = fi.LastWriteTime;
            MessageBox.Show("Name: " + fi.Name + "\n\r" +
            "Größe: " + fi.Length.ToString() + "\n\r" +
            "Dateityp: " + fi.Extension + "\n\r" +
            "geändert am: " + fi.LastWriteTime.ToString());[/highlight]

            jetz wüsste ich gerne noch wie ich das bei LastWriteTime hin bekommt und wie man zeiöenumbrüche in einer messagebox macht.
            oder währe es vllt doch sinnvoller das gante in einen modalen dialog zuschreiben?
            nur leider wüsste ich bei dem jetz nich wie man den aufruft...


            zeilenumbruch hab ich schon hatte nur die "+" vergessen und dadurch hat er mir imma fehler angezeigt
            Zuletzt editiert von kattzze; 17.02.2010, 15:13.
            C# bringt mich noch um den Verstand

            Comment


            • #7
              Hallo,

              da es nur um Anzeigen geht, ist die MessageBox selbst ein modaler Dialog. Da geht es etwa so (aufbauend auf deinem letzten Code):
              [highlight=c#]FileInfo fi = new FileInfo(file1);
              MessageBox.Show(
              fi.Name + " [" + fi.Extension + "]" + Environment.NewLine +
              fi.Length.ToString() + " Bytes " + Environment.NewLine +
              fi.LastWriteTime.ToString("G") );[/highlight]
              Oder (wenn du es wirklich so ausführlich haben willst):
              [highlight=c#]string filename = fi.Name;
              string fileext = fi.Extension;
              long filesize = fi.Length;
              DateTime filewritetime = fi.LastWriteTime;
              // dann die Anzeige zusammensetzen[/highlight]
              Welche Parameter beim Zeitformat möglich sind, findest du in der SDK-Doku/MSDN/Hilfe unter DateTimeFormatInfo.

              Indirekt weißt du nun auch, wie eine neue Zeile in einem String untergebracht wird. (Es gibt natürlich noch andere Verfahren, aber das ist das beste.)

              Bei einem extra Formular musst du das eben bauen, die Angaben übergeben (vielleicht sogar direkt als FileInfo-Instanz in einem passenden Konstruktor) und mit Show oder ShowModal anzeigen. Ich finde so etwas immer unpraktisch und störend, weil dann Zusatzinformationen weggeklickt werden müssen; aber das mag Geschmackssache sein.

              Gruß Jürgen

              Nachtrag: Meine Antwort und deine Änderung haben sich überschnitten. Aber lies dir bitte trotzdem das durch, was ich geschrieben habe, auch wo du es selbst herausgefunden hattest. Außerdem bitte ich dringend um Zeilenumbrüche innerhalb von Code; horizontales Scrollen erschwert das Lesen sehr.

              Comment


              • #8
                ja hab mir durchgelesen was du geschrieben hast und mich auch für die kurze variante entschieden

                was mich jetz noch nervt ist dass beim namen die endung mit angezeigt wird... kann man das irgendwie unterbinden?




                und wenn ich das jetzt in eine neue form schreiben lassen will muss ich ja eigendlich blos das ändern oder?
                Zuletzt editiert von kattzze; 17.02.2010, 15:29.
                C# bringt mich noch um den Verstand

                Comment


                • #9
                  ich hab da noch ein anderes problem...

                  und zwar spuckt mir das
                  [highlight=c#]
                  OpenFileDialog ofd = new OpenFileDialog();
                  if (ofd.ShowDialog() == DialogResult.OK)
                  {
                  foreach (string file in ofd.FileNames)
                  {
                  listView1.Clear();
                  listView1.View = View.LargeIcon;
                  listView1.Items.Add(file);
                  }
                  }
                  [/highlight]

                  immer nur den pfad der datei aus nicht aber die datei selber
                  wo steckt da der fehler?
                  C# bringt mich noch um den Verstand

                  Comment


                  • #10
                    Warum sollte da ein Fehler sein??

                    Du hast es doch selbst schon in Beitrag 6 gemacht
                    ???
                    Christian

                    Comment


                    • #11
                      is doch nen anderes stück quelltext...
                      C# bringt mich noch um den Verstand

                      Comment


                      • #12
                        Originally posted by kattzze View Post
                        ich hab da noch ein anderes problem... und zwar spuckt mir das
                        [highlight=c#] foreach (string file in ofd.FileNames)
                        listView1.Items.Add(file); [/highlight]
                        immer nur den pfad der datei aus nicht aber die datei selber. wo steckt da der fehler?
                        Ich kann an der Stelle auch keinen Grund dafür erkennen. FileNames liefert natürlich Pfad + Dateinamen. Ich könnte mir nur vorstellen, dass das Anzeigefeld zu kurz ist, sodass du nur den Pfad sehen kannst.

                        In diesem Code ist übrigens listView1.Clear Quatsch; das muss außerhalb der Schleife stehen. (Aber ich vermute, dass das nur ein Kopierfehler ist.)

                        Die Bestandteile eines Dateinames erhält man durch Methoden der Path-Klasse.

                        Gruß Jürgen

                        Comment


                        • #13
                          hmm ach so denn zeigt er mir also nur den namen und den pfad an ...
                          wollte doch aba die ganze datei haben
                          wie muss ich dass denn umändern?
                          C# bringt mich noch um den Verstand

                          Comment


                          • #14
                            Ich verstehe nicht, was du mit "ganzer Datei" meinst. Willst du etwa den vollständigen Inhalt einer Textdatei direkt anzeigen lassen? Das kann ich mir nicht vorstellen. Und ein ganzer Dateiname besteht immer aus Laufwerk, Pfad, Hauptname, Extension; die Eigenschaft FileName des Dialogs liefert diese Angaben immer komplett.

                            Vielleicht schreibst du mal beispielhaft eine oder zwei Zeilen der ListView, was du direkt angezeigt haben willst, was tatsächlich angezeigt wird und was durch eine Auswahl im ContextMenu angezeigt werden soll. Im Moment habe ich den Eindruck, dass alle aneinander vorbeireden.

                            Jürgen

                            Comment


                            • #15
                              nein ich möchte nicht den inhalt von der datei angezeigt bekommen sondern einfach die datei selbst und nicht nur den pfad so wie ich sie bekomme wenn ich in meiner treeview auf einen ordner klicke
                              aba es is ja recht umständlich wenn man etwas in einem unterordner von einem unter ordner von einem ordner usw. sucht daher wollte ich das damit vereinfachen
                              aba es wird eben nur der pfad angezeigt und nicht die datei selbst...
                              ich hoffe es ist verständlich was ich meine


                              Nachtrag: Ok hab mir das jetzr anders überlegt und lasse die dateien nicht direkt dort rein schreiben sonder öffne mit dem FolderBrowserDialog und setze dann nen neuen startpunkt

                              [highlight=c#]
                              FolderBrowserDialog fbd = new FolderBrowserDialog();
                              if (fbd.ShowDialog() == DialogResult.OK)
                              {
                              string foldername = fbd.SelectedPath;

                              treeView1.Nodes.Clear();
                              TreeNode tn1 = new TreeNode();
                              tn1.Tag = foldername;
                              tn1.Text = foldername;
                              treeView1.Nodes.Add(tn1);
                              treeView1.SelectedNode = tn1;
                              [/highlight]
                              Zuletzt editiert von kattzze; 18.02.2010, 11:27.
                              C# bringt mich noch um den Verstand

                              Comment

                              Working...
                              X