Mein Programm startet eine Suche in Dateien und wenn die Zeichenfolge gefunden wird, filtert sie sie zwischen einer anderen Zeichenfolge und zeigt sie dann in der Listbox mit entsprechenden Farben an (rot für schlechte Zeilen bestimmt durch der zweite Filter) und grün für die guten Eins, die Listbox zeigt location \ file, und in einer anderen Zeile die Zeile selbst.C# listbox, ownerdrawfixed, get selected item
jetzt möchte ich die Datei öffnen, indem Sie auf der Stelle \ dubbelclicking filebut mein Code funktioniert nicht in ownerdrawfixed (welche ich brauche/will für die Farben) i
versuchtstring filename = listBox1.GetItemText(listBox1.selectedItem);
if (file.exists(filename))//to check if i click on a filename or on a line
{
try
{
System.diagnostics.process.start("scite.exe",filename); //open file with scite
}
catch
{
system.Diagnostics.Process.start(filename);//open file with windows default
}
ich gelernt, dass die Zeichenfolge "Dateiname" enthält jetzt "Datscan.Form1 + MyListboxItem"
Viele Antworten gefunden, wie man es mit drawmode auf normal eingestellt, aber ich brauche es in ownerdrawfixed.
Was funktioniert nicht? Was passiert, wenn es nicht funktioniert? Wie legen Sie den Doppelklick-Ereignishandler fest? Nur für s * und Kichern, und Fehlerbehebung sakes, funktioniert es, wenn Sie 'ownerdrawfixed' nicht verwenden? –
Nichts mit OwnerDraw zu tun. Ihre MyListboxItem-Klasse sollte ToString() überschreiben. Sie können also listBox1.SelectedItem.ToString() verwenden. Nicht unbedingt notwendig für OwnerDraw, aber wenn Sie dies nicht tun, dann müssen Sie eine Umwandlung, wie CType (listBox1.selectedItem, MyListboxItem) .Dateiname verwenden, vorausgesetzt, Dateiname ist korrekt (wir können es nicht sehen). Das Überschreiben von ToString() ist am besten. –