DataSourceがリストであり、フォルダ名を含むリストボックスがあります。私は、リストボックスとパスからフォルダを削除したいが、最初は動作しません。DataSourceでListBoxからアイテムを削除
ここでコード:
private static List<string> themesF;
public Form1()
{
InitializeComponent();
List<string> dirs = new List<string (System.IO.Directory.GetDirectories(@"Thems"));
var pngs = System.IO.Directory.GetFiles(@"Thems").Where(s => s.EndsWith(".png"));
themesF = new List<string>();
for (int i = 0; i < dirs.Count; i++)
{
themesF.Add(dirs[i].Substring(6));
Console.WriteLine("A) Directorio " + dirs[i]);
Console.WriteLine("B) Carpeta" + themesF[i]);
}
lb.DataSource = themesF;
pbx.ImageLocation = (@"Thems\" + themesF[0] + @"\Preview.png");
}
private void btnRemove_Click(object sender, EventArgs e)
{
String folder = lb.SelectedItem.ToString();
themesF.Remove(folder);
lb.DataSource = null;
lb.DataSource = themesF;
System.IO.Directory.Delete(@"Thems\" + folder,true);
}
デバッガを使用して理由を説明します。 'String folder = lb.SelectedItem.ToString();'行に停止を置き、何が起こるかを追う。 – LarsTech
フォルダlb.selecteditem から値を取る「」今、私はヌル lb.selecteditemとしての価値を置く前に lb.datasourceが17フォルダの を持っている「フォルダ」。 themesFには、データソースと同じ17個のフォルダがあります。 私は削除すると、私は16フォルダ、 lb.Datasource = themesFそれは16のフォルダがあります。 選択したアイテムは現在folder1ですが、まだ選択されているフォルダです – Seeker
リストの代わりにBindingListを使用します。クリックイベントでDataSource行を削除します。 – LarsTech