Ich habe ein bisschen Probleme mit dieser Methode.combolistbox.Item.Add (FileInfo) inkonsistent?
Wenn ich die Objekte des FileInfo-Typs in dragDropFiles durchlaufe und jeden einzelnen zum CLB hinzufüge, erhalte ich die Eigenschaft FullName (vollständiger Pfad zur Datei, die ich brauche), wenn das Element überprüft wird. Allerdings mit den hotFolderFiles anstelle des Pfades gibt es mir nur den Dateinamen.
Ich verstehe das nicht, weil sie den gleichen Objekttyp auf die gleiche Weise hinzufügen.
(ich habe auch versucht die Fileinfo für Hotfolder-Dateien bekommen die Directory statt meinem Wörterbuch mit gleichen Ergebnisse verwenden)
Warum ist das Verhalten im Widerspruch? (und wie kann ich es die fileinfo fullname statt Namen zurück?)
public frmFilesFound(string hotFolderPath, Dictionary<string, FileInfo> dragDropFiles, Dictionary<string, FileInfo> hotFolderFiles, bool ReadOnly)
{
try
{
InitializeComponent();
readOnly = ReadOnly;
btnSelectAll.Visible = true;
clbSelectFilesFound.Visible = true;
clbSelectFilesFound.FormattingEnabled = true;
clbSelectFilesFound.Format += (s, e) => { e.Value = string.Format("{0}", ((FileInfo)e.ListItem).Name); };
foreach (FileInfo fileInfo in dragDropFiles.Values)
{
if (!clbSelectFilesFound.Items.Contains(fileInfo))
{
try
{
// If file not already present, add it to listbox
clbSelectFilesFound.Items.Add(fileInfo);
}
catch (Exception ex) { MessageBox.Show("Error: " + ex.Message); }
}
}
//intended to be hot folder path
if (!String.IsNullOrEmpty(hotFolderPath))
{
DirectoryInfo dirInfo = new DirectoryInfo(hotFolderPath);
foreach (FileInfo fileInfo in dirInfo.GetFiles())
//foreach (FileInfo fileInfo in hotFolderFiles.Values)
{
if (!clbSelectFilesFound.Items.Contains(fileInfo))
{
try
{
clbSelectFilesFound.Items.Add(fileInfo);
}
catch (Exception ex) { MessageBox.Show("Error: " + ex.Message); }
}
}
}
lblDisplayedSelectMessage.Text = "More than one file is waiting. Please select the files you would like to use.";
}
catch (Exception ex)
{ MessageBox.Show(ex.ToString()); }
}
Das ist nur die Schönheit einer Combobox, Sie Objekte hinzufügen können. Ansonsten, z. die Eigenschaft SelectedItem hätte keine Verwendung. –
Legen Sie dann seinen Datenelementfilter auf "FullName" fest, oder kennzeichnen Sie das Element mit der Dateiinfo selbst, damit Sie später darauf zugreifen können. – SimpleVar
Ich füge das Objekt hinzu, weil ich den Dateinamen in der ComboListBox anzeigen möchte, aber ich möchte den FullName aus den Auswahlergebnissen verwenden. – negligible