Autor Beitrag
c#ler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Do 11.10.12 08:35 
ich habe diverse SQL Skripte in einem Ordner.
Die Dateien in dem Ordner lasse ich zählen und deren Namen werden in einen string array geschrieben.
ausblenden C#-Quelltext
1:
2:
3:
string[] Files = Directory.GetFiles(@"D:\Test\SQLScripts""*.sql");
DirectoryInfo di = new DirectoryInfo(@"D:\Test\SQLScripts");
count = di.GetFiles().Length;


Die Namen dieser Skripte möchte ich nun items in einer Listview hinzufügen (1 Item/1Skript)
ausblenden C#-Quelltext
1:
2:
3:
4:
ListViewItem item1 = new ListViewItem(Files[1]);
item1.SubItems.Add("SubItem1a");
item1.SubItems.Add("SubItem1b");
listView_sql.Items.AddRange(new ListViewItem[] { item1});


Die Items manuell (einzeln) hinzuzufügen geht.
Ich möchte aber, dass:
- das Programm beim Start den die Anzahl der Skripte und deren Namen ausliest
- das Programm für jedes Skript ein Listviewitem erstellt wird

weiß jemand, wie das funktionieren kann?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 11.10.12 09:19 
Hallo c#ler,

du hast aber schon mal etwas von Schleifen gehört, oder?

Deine Konstruktion AddRange(new ListViewItem[] ...) für genau ein Item ist aber auch etwas umständlich. Nimm dafür doch einfach Add(item) - und nun sollte auch klar sein, wie die Schleife aussehen muß...

Für diesen Beitrag haben gedankt: c#ler
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Do 11.10.12 10:54 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo c#ler,

du hast aber schon mal etwas von Schleifen gehört, oder?

Deine Konstruktion AddRange(new ListViewItem[] ...) für genau ein Item ist aber auch etwas umständlich. Nimm dafür doch einfach Add(item) - und nun sollte auch klar sein, wie die Schleife aussehen muß...


Fragen kann man auch netter beantworten ;)
Natürlich habe ich schon etwas von schleifen gehört.
Ich habe auch schon einen ersten Versuch mit einer While schleife unternommen, jedoch weiß ich nicht, wie ich jedes item aus dem Array einzeln übergebe..

edit:
Ich habe nun

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
while (n < count_scripts)
{
ListViewItem item1 = new ListViewItem(Files[0]);
n++;
listView_sql.Items.Add(item1);
}


Ich habe 28 Skripte in dem Ordner...
d.h. er haut mir 28x das GLEICHE Listviewitem rein...
die Anzahl passt...
aber ich weiß nicht, wie ich ihm sage, dass für jeden schleifendurchlauf ein neues Listviewitem mit dem nächsten String aus dem Array erstellt werden soll.


edit:


Problem behoben...
War einfach n denkfehler:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
int n = 0;
int c = 0;
if (Directory.Exists(@"D:\Test"))
{
string[] Files = Directory.GetFiles(@"D:\Test\SQLScripts""*.sql");
DirectoryInfo di = new DirectoryInfo(@"D:\Test\SQLScripts");
count = di.GetFiles().Length;

while (n < count)
{
ListViewItem varitem = new ListViewItem(Files[c]);
varitem.Name = "item" + n;
n++;
c++;

listView_sql.Items.Add(varitem);
}
}


Zuletzt bearbeitet von c#ler am Do 11.10.12 11:12, insgesamt 1-mal bearbeitet
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 11.10.12 11:11 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
string[] Files = Directory.GetFiles(@"D:\Test\SQLScripts""*.sql");
foreach (var file in Files)
{
    ListViewItem item = listView1.Items.Add(file);
    item.SubItems.Add("blah");
    // ....
}



Edit : wenn du immer Files[0] hinzufügst ist n überflüssig. Und du musst dich nicht wundern das du auch immer nur das erste Element zu sehen bekommst ;)
c#ler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 176
Erhaltene Danke: 1

Win7 64Bit
C#, VBA, VS2013 Ultimate
BeitragVerfasst: Do 11.10.12 11:13 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
string[] Files = Directory.GetFiles(@"D:\Test\SQLScripts""*.sql");
foreach (var file in Files)
{
    ListViewItem item = listView1.Items.Add(file);
    item.SubItems.Add("blah");
    // ....
}



Edit : wenn du immer Files[0] hinzufügst ist n überflüssig. Und du musst dich nicht wundern das du auch immer nur das erste Element zu sehen bekommst ;)


recht hast ;)