Hallo,
ich versuche derzeitig mir in der ersten Spalte in meiner listView1 ein Icon Anzeigen zu lassen, die Images sind schon alle in der Imagelist geladen.
hier der Code wie ich es bisher nutze:
imageList1.Images.Add("Pic1", Image.FromFile(@"C:\Bilder\Whey.png", true));
listView1.Items.Add(new ListViewItem("Item1") { ImageKey = "Pic1" });
Problem hier ist das er halt eine neue Spalte benutzt (Item1), und dazu packt der das gleiche Bild immer und immer wieder in die listView wenn ich den code erneut ausführe.
Das Bild was Angezeigt werden sollte lese ich bereits aus (bildname.png) nun möchte ich gerne wissen wie ich das am besten anstelle.
Gruß Crime
Problem hier ist das er halt eine neue Spalte benutzt (Item1), und dazu packt der das gleiche Bild immer und immer wieder in die listView wenn ich den code erneut ausführe.
Warum sollte auch etwas anderes passieren? Du erstellst jedes mal ein neues Listviewitem mit dem gleichen Icon. Irgendwie verstehe ich nicht wirklich was du erreichen willst und was das Problem ist.
ich erstelle mit diesem code eine neue Zeile:
string[] myItemsInt = new string[]
{
i.ToString(),
GetName(i),
GetTexture(i),
GetCount(i).ToString(),
GetLevel(i).ToString(),
GetMinBid(i).ToString(),
GetMinIncrement(i).ToString(),
GetBuyoutPrice(i).ToString(),
GetBidAmmount(i).ToString(),
GetTimeleft(i).ToString(),
GetOwner(i)
};
ListViewItem lvi = new ListViewItem(myItemsInt);
listView1.Items.Add(lvi);
und genau in dieser Zeile möchte ich auch das ICON drinne haben, ist für jede Zeile ein anderes, der Name wird ausgelesen und der Name des Bildes in der Imagelist soll Angezeigt werden.
wenn noch Fragen offen sind, bitte posten.
Hallo,
wenn du deine Imagelist zuerst richtig befüllst, und für die Instantiierung des ListViewItem diese Überladung verwendest sollte es so klappen wie du es willst.
fz
"We better hurry up and start coding, there are going to be a lot of bugs to fix."
gibts davon auch etwas genauers? z.B. solch einen Code:
imagelist1.images.imageskey = 2779;
Edit:
also ich mache es im Moment so:
ListViewItem lvi = new ListViewItem(myItemsInt);
ListViewItem myItem = new ListViewItem(@"C:\Images\");
currentTextrue = GetTexture(i);
string[] arrResult = currentTextrue.Split(new Char[] { '\\' });
currentTextrue = (arrResult[2]);
myItem.ImageKey = currentTextrue + ".png";
listView1.Items.Add(lvi);
imageList1.Images.Add(currentTextrue, Image.FromFile(@"C:\Images\" + currentTextrue + ".png", true));
listView1.Items.Add(new ListViewItem("lvi") { ImageKey = currentTextrue });
funktionier recht gut nur das Problem is halt das er die Bilder nicht aus der Imagelist nimmt, und das er es in eine Neue Spalte packt und nicht in die wo es rein sollte.
Hallo,
so sollte es gehen:
imageList1.Images.Add("testKey", Image.FromFile(@"Pfadbild"));
string[] items = new string[] { "item1", "item2", "item3" };
ListViewItem myItem = new ListViewItem(items, "testKey");
listView1.Items.Add(myItem);
myItem.ImageKey = currentTextrue + ".png"; //andere Key als unten einmal mit Endung einmal ohne //... imageList1.Images.Add(currentTextrue, Image.FromFile(@"C:\Images\" + currentTextrue + ".png", true));
fz
"We better hurry up and start coding, there are going to be a lot of bugs to fix."
sorry glaube habe mich falsch ausgedrückt, ich möchte das er die Bilder aus der Imagelist benutzt und nicht von meiner Festplatte.
hier der Code den ich Aktuell benutze, aber dieser holt die Bilder von der Festplatte:
string[] myItemsInt = new string[]
{ placeholder,
i.ToString(),
GetName(i),
GetCount(i).ToString(),
GetLevel(i).ToString(),
GetMinBid(i).ToString(),
GetMinIncrement(i).ToString(),
GetBuyoutPrice(i).ToString(),
GetBidAmmount(i).ToString(),
GetTimeleft(i).ToString(),
GetOwner(i)
};
ListViewItem lvi = new ListViewItem(myItemsInt);
currentTextrue = GetTexture(i);
string[] arrResult = currentTextrue.Split(new Char[] { '\\' });
currentTextrue = (arrResult[2]);
imageList1.Images.Add(currentTextrue, Image.FromFile(@"C:\Images\" + currentTextrue + ".png", true));
listView1.Items.Add(new ListViewItem(myItemsInt) { ImageKey = currentTextrue });
ich möchte das er die Bilder aus der Imagelist benutzt und nicht von meiner Festplatte.
Ja und warum machst du es dann nicht einfach so?
Lad die Bilder im Designer in die Imagelist und gib zur Laufzeit den Key an. Wo ist das Problem?
wenn ich das so mache, dann sind 8,000 Bilder mit Zahlen besetzt, und dann alle 8,000 umbennen? glaube da bin ich ne woche beschäftigt.
Hallo,
beschreib doch mal in Worten was du genau möchtest, nicht nur ständig diese Code Fragmente posten.
Wie ich das verstanden habe möchtest du 8000 Bilder in einer Imagelist verwalten und diese dann per Key in einer Listview anzeigen, pro Zeile eine anders Bild? Wo genau liegt nun dein Problem?
fz
"We better hurry up and start coding, there are going to be a lot of bugs to fix."
also ich habe genau das vor was du geschrieben hast, doch leider haben die 8000Bilder alle einen Key zu gewiesen bekommen, und die über diesen Key aufrufen ist sehr Kompliziert dann müsste ich für 8000Bilder jeweils einen key machen das würde so aus sehen
bildname1 = Imagelist.Imagekey[0]
ich hätte gerne die Bilder so in der Imagelist, das ich sie bei ihrem richtigen Bildname aufrufen kann, und nicht bei ihrem key.
ich hätte gerne die Bilder so in der Imagelist, das ich sie bei ihrem richtigen Bildname aufrufen kann, und nicht bei ihrem key.
Dann füg die Bilder auch mit dem entsprechenden (String-) Key der ImageList hinzu. Das hat F.Z. auch schon oben gepostet.
Und gewöhn dir an bei einer Frage alle relevanten Informationen rauszugeben damit man dir nicht alles aus der Nase ziehen muss.
ich denke mir wenn ich das so einmal gemacht habe und dann den Ordner lösche wo die Bilder drinne waren, hagelt es Fehlermeldungen weil er den Pfad nicht finden kann.
Habe es noch nicht getestet aber nur mal so rein aus dem Logischen Denken.
Dann leg dir die Dateinamen als Property deiner Objekte die du in der ListView anzeigen willst ab. Wenn die Bilder einmal in der ImageList sind spielt es keine Rolle was mit dem Ordner wo sie herkamen passiert (ausser natürlich du greifst weiterhin aus dem Code darauf zu).
Hallo CrimeTime,
ich denke mir wenn ich das so einmal gemacht habe und dann den Ordner lösche wo die Bilder drinne waren, hagelt es Fehlermeldungen weil er den Pfad nicht finden kann.
keine Ahnung, wie du darauf kommst. Die Keys sind einfache, beliebige Namen. Ob du da den Pfad verwendest oder was anderes, kannst du dir aussuchen. .NET ist es egal und stellt daher auch keinen Bezug zu den Pfaden auf der Festplatte her.
Andersherum wird die Image-Liste natürlich erst zur Laufzeit erstellt und zu diesem Zeitpunkt muss das Programm natürlich die Bilder laden können. Wenn du die Bilder nicht auf der Festplatte haben willst, kannst du sie als Ressourcen ins Programm packen, siehe Ressourcen in Anwendungen. Das hat aber nichts mit der ursprünglichen Frage zu tun.
Habe es noch nicht getestet aber nur mal so rein aus dem Logischen Denken.
Bitte erst testen, dann fragen/posten.
herbivore
Dann leg dir die Dateinamen als Property deiner Objekte die du in der ListView anzeigen willst ab. Wenn die Bilder einmal in der ImageList sind spielt es keine Rolle was mit dem Ordner wo sie herkamen passiert (ausser natürlich du greifst weiterhin aus dem Code darauf zu).
also wenn ich dies so mache wie man es bei der Imagelist macht z.B. klicke unten bei der Form auf die Imagelist1, dann auf Choose Images und suche dann per Add das Bild was ich gerne drinne haben möchte und wähle es aus das es rein geladen wird.
Habe ich das Problem das er diesem Bild Automatisch den Imagekey "0" zuweist, doch ich hätte gerne das er dem Bild den Bildname zuweist.
Bitte um genaue Beschreibung wie man dies macht, nicht das dieser Thread noch länger wird als er so schon ist wegen den Unklarheiten.
Gruß Crime
Hallo,
welche Entwicklungsumgebung verwendest du? Visual Studio verwendet bei mir so wie du es möchtest den Namen als Imagekey
fz
"We better hurry up and start coding, there are going to be a lot of bugs to fix."
Bist du dir sicher das er als ImageKey "0" nimmt und nicht als ImageIndex? Bei mir sind auch die Dateinamen die ImageKeys der Bilder. (Habe die identische VS Version wie du)
dann wird es wohl daran liegen das ich es Falsch verwendet habe, hier mein Aktueller Code um das Bild einzufügen:
listView1.Items.Add(new ListViewItem(myItemsInt) { ImageKey = currentTextrue });
currentTextrue ist wie gehabt der Bildname ohne Extension.
Edit: genaud as war das Problem das es ohne Extension war 😉 Gelöst!