Example for BindingList using Tree nodes.
You could even use:
public BindingList<TreeNode> bindingList;
but that's not very practical :)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace TestForm1
{
public partial class Form8 : Form
{
public BindingList<diskClass> bindingList;
public Form8()
{
InitializeComponent();
this.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
this.dataGridView1.AllowUserToAddRows = false;
}
private void button1_Click(object sender, EventArgs e)
{
bindingList = new BindingList<diskClass>();
bindingList.AllowNew = true;
bindingList.AllowRemove = true;
if (this.dataGridView1.DataSource != null)
{
this.dataGridView1.DataSource = null;
}
this.AddTestData(@"C:\Temp");
}
private void AddTestData(string dirString)
{
string[] dirs = Directory.GetDirectories(dirString);
int number = 1;
foreach (string dir in dirs)
{
DirectoryInfo di = new DirectoryInfo(dir);
TreeNode node = new TreeNode(dir, 0, 1) { Checked = true, Name = di.Name};
var item = new diskClass();
item.Number = number++;
item.Name = node.Name;
item.Path = node.Text;
bindingList.Add(item);
}
this.dataGridView1.DataSource = bindingList;
this.dataGridView1.Columns[0].Frozen = true;
}
private void buttonDelete_Click(object sender, EventArgs e)
{
if (this.dataGridView1.CurrentRow != null)
{
this.bindingList.RemoveAt(this.dataGridView1.CurrentRow.Index);
}
}
private void buttonAdd_Click(object sender, EventArgs e)
{
var item = new diskClass();
bindingList.Add(item);
}
}
public class diskClass
{
public int Number { get; set; }
public string Name { get; set; }
public string Path { get; set; }
}
}