C#如何对DataGridView中现有图片列的图片进行缩放
解决方案
DataGridView自动绑定包含二进制图片字段的DataTable时,生成的对应列本身就是DataGridViewImageColumn类型,不需要额外做类型转换,直接强转后设置属性即可。
方案1:绑定后直接设置
绑定数据源后直接获取目标列操作即可,注意列索引从0开始计数,第10列对应的索引为9:
DataSet ds = CapsDbUtils.GetSamples(sampleIds); dgvSample.DataSource = ds.Tables[0]; // 新增以下代码 if (dgvSample.Columns[9] is DataGridViewImageColumn imageCol) { // 设置图片拉伸适配单元格 imageCol.ImageLayout = DataGridViewImageCellLayout.Stretch; // 可选:如果需要图片列自适应宽度可取消注释下一行 // imageCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; }
如果担心列索引变动,也可以用数据库里的图片字段名代替索引,写法为dgvSample.Columns["你的图片字段名"],稳定性更高。
方案2:绑定事件自动设置(推荐)
如果存在多次重新绑定数据源的场景,可以把逻辑放到DataBindingComplete事件中,每次绑定完成自动生效:
// 注册绑定完成事件,可放在窗体初始化逻辑中 dgvSample.DataBindingComplete += (sender, e) => { if (dgvSample.Columns[9] is DataGridViewImageColumn imageCol) { imageCol.ImageLayout = DataGridViewImageCellLayout.Stretch; } }; // 后续绑定数据源不用再重复写设置逻辑 DataSet ds = CapsDbUtils.GetSamples(sampleIds); dgvSample.DataSource = ds.Tables[0];
内容的提问来源于stack exchange,提问作者bogtastic
相关产品推荐
相关产品推荐

