Forum: PC-Programmierung visual studio Hilfe


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
bin gerade am Experimentieren mit der vs-Hilfe. Habe jetzt vc# und vb 
installiert.

Wenn ich in vb z.B. "TextBox1" markiere, kommt die online-Hilfe für vc#. 
(Wie ich jetzt herausgefunden habe kann man oben rechts auf der Seite 
einstellen, dass vb-Code kommt => also alles in Ordnung)
(https:// 
)docs.microsoft.com/de-de/dotnet/api/system.windows.forms.textbox?redire 
ctedfrom=MSDN&view=netframework-4.7.2

Genau die gleiche Hilfe möchte ich in vc haben. Es kommt aber nur ein 
nicht interessierender Hinweis auf "previous version"
(https:// 
)docs.microsoft.com/de-de/previous-versions/visualstudio/visual-studio-2 
010/dd831853(v=vs.100)

Wie stelle ich in vc# ein, dass die online-Hilfe richtig funktioniert?

von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
konkretes Problem:

   abfry = Dir(TextBox3.Text + @"\*.*", FileAttribute.Directory);

Dir kennt vc# nicht. Da fehlt wohl irgendeine bib. Welche?

von nicht"Gast" (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Hä?

les deinen Beitrag noch mal durch und versuche zu verstehen, was deine 
Frage ist.

Beitrag #5606614 wurde von einem Moderator gelöscht.
Beitrag #5606620 wurde von einem Moderator gelöscht.
von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Horst schrieb im Beitrag #5606614:
> such dir was besseres


Standardanwendung ist bei mir, Dateiordner lesen, sortieren
txt-Dateien schreiben und lesen.

in vb lese ich ein Dateiverzeichnis so:

abfr= Dir("xyz")

do while abfr<>""
abfr=dir()
loop

Dir stammt wohl noch aus Dos-Zeiten.

In vc# bin ich mit der Umsetzung dieser Aufgabe bislang gescheitert. 
Hilft auch nicht, den code irgendwoher zu bekommen. Der Einstieg in vc# 
ist wohl mit Arbeit verbunden. Habe jetzt 700 Seiten Tutorial 
ausgedruckt und wühl mich durch das Geraffel mal durch.

von Framulestigo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Du bist in C#?
Ist es möglich, dass Du eine Referenz auf Microsoft.VisualBasic… im 
Projekt vermisst?

Wenn ich das so richtig verstehe, Du suchst nach lokalen Verzeichnissen 
oder so? Das geht in C# und VB.NET mittlerweile anders, aber bei beiden 
gleich.

Mach mal den ObjectBrowser auf und suche nach dem Namensraum System.IO 
im Assembly mscorlib. Da gibt's Klassen, wie Path, Directory, File, 
DriveInfo, ...

Statt TextBox3.Text + @"\*.*" kannst Du dann auch schreiben
Path.Combine(TextBox3.Text,"*.*)

(Das ersetzt Dir unter Mono auf'm Raspi sogar noch den "\\" durch'n "/")

von Bernd H. (geeky)


Bewertung
0 lesenswert
nicht lesenswert
Framulestigo schrieb:
> Ist es möglich, dass Du eine Referenz auf Microsoft.VisualBasic… im
> Projekt vermisst?

Darauf würde ich auch tippen.

In C# würde man allerdings statt Dir() aus VB.net eher 
Directory.GetFiles() (steckt in System.IO) oder eine der anderen 
Funktionen der Directory-Klasse nehmen.

von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Framulestigo schrieb:
> Da gibt's Klassen, wie Path, Directory, File, DriveInfo, ...

Danke, gefunden - mit alten dos- Kenntnissen jahrzehntelang 
durchgemogelt...

Jetzt häng ich am listview:


[c]

              try
      {
                     var txtFiles = 
Directory.EnumerateDirectories(sourceDirectory, "*.*", 
SearchOption.TopDirectoryOnly);



                   foreach (string currentFile in txtFiles)
            {

                        string fileName = 
currentFile.Substring(sourceDirectory.Length);
                       FileAttributes attributes = 
File.GetAttributes(sourceDirectory + fileName);

                       if (File.GetAttributes(sourceDirectory + 
fileName) == FileAttributes.Directory) {

                     listView1.Items.Add(fileName);


                     //listView1.Items(i).SubItems.Add ("V");
                     //listView1.Items(i).SubItems.Add((Strings.Format(len, 
"#,###")));

                    }

             }
               }
                catch (Exception ex)
                {
                   listBox1.Items.Add(ex);

                }


[c/]

Der code geht in vb. In vc bekomme ich die subitems nicht gehandelt.

Wie lege ich in vc ein listview-subitem an?

von Framulestigo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
grundschüler schrieb:
> listView1.Items.Add(fileName);
>
>                      //listView1.Items(i).SubItems.Add ("V");
>                      //listView1.Items(i).SubItems.Add((Strings.Format(len,
> "#,###")));

Meinst Du das?

listView1.Items[i].SubItems.Add ("V");
C unterscheidet generell den Zugriff auf Feldelemente (auch Listen) 
durch die Form der Klammern (->[i]).

Das i brauchst Du aber nicht, respektive i hast Du in Deinem Code gar 
nicht drin. Schau Dir noch mal im ObjectBrowser die Signatur der 
überladenen ListViewItemsCollection.Add-Methoden an. Du wirst 
feststellen, die haben alle auch nen Rückgabewert.
-->
ListViewItem newItm = listView1.Items.Add(fileName);
newItm.SubItems.Add(...);

...sollte z.B. gehen.

von Roger S. (edge)


Bewertung
0 lesenswert
nicht lesenswert
Ersetze den foreach loop mit (und lerne linq):
listView1.Items.AddRange(
  new DirectoryInfo(sourceDirectory)
  .EnumerateDirectories()
  .Select(x => new ListViewItem(x.Name))
  .ToArray());

Cheers, Roger

von Roger S. (edge)


Bewertung
0 lesenswert
nicht lesenswert
hier die Variante mit subitems in einem flutsch:
listView1.Items.AddRange(
  new DirectoryInfo(sourceDirectory)
  .EnumerateDirectories()
  .Select(x => new ListViewItem(new string[]
    { x.Name, "V", x.CreationTime.ToString() },
    -1))
  .ToArray());

Cheers, Roger

von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Framulestigo schrieb:
> Form der Klammern (->[i]).

Danke. Stunden der Fehlersuche - so ein dummer Fehler...

von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Roger S. schrieb:
> in einem flutsch:

Danke. Guck ich mir an.

von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
  
          mp.settings.volume = 100;
            listBox2.SelectedItem = "DerdritteMann.mp3";
            mp.URL = @mp3_device + @mp3_folder + @"\" + @listBox2.Items[listBox2.SelectedIndex];
            mp.controls.currentPosition = mp3_position;
            mp.controls.play();
            button5.Text = "pause";

Mit einigem Probieren ist der Einstieg in c# gar nicht so schwierig. 
Jetzt habe ich folgendes Problem:

Bei Aufruf des Programms soll die System-Lautstärke - meist von 
Lautspecher aus - auf einen bestimmten Wert eingestellt werden. Wie 
greife ich von c# auf die Systemlautstärke zu?

von Michael (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Auch, wenn das irgendwie altmodisch klingt: Vielleicht solltest du

a) mit C# ganz vorne anfangen, und nicht einfach dein VB Programm in 
eine dir unbekannte Sprach übersetzen wollen und
b) das Forum nicht als Suchfunktion missbrauchen, erstes Suchergebnis 
bei Google beantwortet deine Frage:
https://www.google.com/search?hl=de&q=c%23%20windows%20sound%20volume
->
https://stackoverflow.com/questions/13139181/how-to-programmatically-set-the-system-volume

von grundschüler (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:

danke für deinen Beitrag. Das verlinkte Beispiel funktioniert auf Anhieb 
perfekt. Ich hatte natürlich vorher selbst gegoogelt, bin aber nicht 
weiter gekommen.

Problem für mich ist die Systematik der Einbindung von Resourcen:


using System.Runtime.InteropServices;

[DllImport("user32.dll")]



> mit C# ganz vorne anfangen, und nicht einfach dein VB Programm in
> eine dir unbekannte Sprach übersetzen wollen

Das ist nicht ganz einfach wenn man c-Vorkenntnisse hat. Ich bin mit 
einem recht komplizierten c#-Projekt - auch dank deiner Hilfe - doch 
recht weit gekommen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.