【发布时间】:2018-05-23 13:26:57
【问题描述】:
我有 sn-p 代码来执行以下操作:
- 两个 ListBox 绑定在一起。第一个显示目录,第二个显示子文件夹。
-DataGridView 显示 .bmp 文件。
我只需要设置一个名为(Blocks)的列,并添加双击事件以插入dwg文件。
public partial class Form1 : Form
{
private string rootDirectory = @"D:\test\Blocks";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
listBox1.DataSource = Directory.GetDirectories(rootDirectory).Select(Path.GetFileName).ToList();
listBox1.SelectedIndexChanged += ListBox1_SelectedIndexChanged;
listBox2.SelectedIndexChanged += ListBox2_SelectedIndexChanged;
DataGridViewImageColumn dgvimgcol = new DataGridViewImageColumn();
dgvimgcol.ImageLayout = DataGridViewImageCellLayout.Stretch;
dgvimgcol.Width = 250;
dgvimgcol.HeaderText = "Blocks";
dgvimgcol.Image = null;
dataViewImages.RowTemplate.Height = 300;
dataViewImages.Columns.Add(dgvimgcol);
dataViewImages.AllowUserToAddRows = false;
dataViewImages.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
// When an item changes in the first listbox, update the second listbox datasource
var parentDir = Path.Combine(rootDirectory, listBox1.SelectedItem.ToString());
listBox2.DataSource = Directory.GetDirectories(parentDir).Select(Path.GetFileName).ToList();
}
private void ListBox2_SelectedIndexChanged(object sender, EventArgs e)
{
// When an item changes in the second listbox, update the datagridview datasource
var parentDir = Path.Combine(rootDirectory, listBox1.SelectedItem.ToString(),
listBox2.SelectedItem.ToString());
dataViewImages.DataSource = Directory.GetFiles(parentDir).Select(f => new { FileName = Path.GetFileName(f) }).ToList();
}
}
【问题讨论】:
-
您正在绑定一个恰好是文件名的字符串列表。网格不会知道您希望它读取这些图像并将它们显示在另一列中。您的数据源还应包含
Image属性。 -
感谢@Crowcoder 重播。可以举个例子吗
标签: c# datagridview