Forum: PC-Programmierung visual studio Hilfe


von grundschüler (Gast)


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)


Lesenswert?

konkretes Problem:

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

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

von nicht"Gast" (Gast)


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)


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)


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)


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)


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)


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)


Lesenswert?

Ersetze den foreach loop mit (und lerne linq):
1
listView1.Items.AddRange(
2
  new DirectoryInfo(sourceDirectory)
3
  .EnumerateDirectories()
4
  .Select(x => new ListViewItem(x.Name))
5
  .ToArray());

Cheers, Roger

von Roger S. (edge)


Lesenswert?

hier die Variante mit subitems in einem flutsch:
1
listView1.Items.AddRange(
2
  new DirectoryInfo(sourceDirectory)
3
  .EnumerateDirectories()
4
  .Select(x => new ListViewItem(new string[]
5
    { x.Name, "V", x.CreationTime.ToString() },
6
    -1))
7
  .ToArray());

Cheers, Roger

von grundschüler (Gast)


Lesenswert?

Framulestigo schrieb:
> Form der Klammern (->[i]).

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

von grundschüler (Gast)


Lesenswert?

Roger S. schrieb:
> in einem flutsch:

Danke. Guck ich mir an.

von grundschüler (Gast)


Lesenswert?

1
  
2
          mp.settings.volume = 100;
3
            listBox2.SelectedItem = "DerdritteMann.mp3";
4
            mp.URL = @mp3_device + @mp3_folder + @"\" + @listBox2.Items[listBox2.SelectedIndex];
5
            mp.controls.currentPosition = mp3_position;
6
            mp.controls.play();
7
            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)


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)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.