DataGridViewImageColumn 图像布局不起作用
DataGridViewImageColumn Image layout doesn't work
我正在尝试在带有图像列的 datagridview 上显示图像;然而,
它看起来垂直拉伸并水平挤压。我不确定是什么限制了它以这种方式显示。
网格生成
gvPackage.Columns.Clear();
gvPackage.AutoGenerateColumns = false;
DataGridViewColumn[] cols = new DataGridViewColumn[5];
GridColumn gc = null;
cols[0] = new DataGridViewTextBoxColumn();
cols[0].DataPropertyName = "ID";
cols[0].Name = "ID";
cols[0].Visible = false;
cols[1] = new DataGridViewTextBoxColumn();
cols[1].DataPropertyName = "iLive";
cols[1].Name = "iLive";
cols[1].Visible = false;
cols[2] = new DataGridViewTextBoxColumn();
cols[2].DataPropertyName = "iExplicit";
cols[2].Name = "iExplicit";
cols[2].Visible = false;
cols[3] = new DataGridViewImageColumn();
cols[3].Name = "Icon";
cols[3].Width = 70;
cols[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
cols[3].FillWeight = 1F;
cols[4] = new DataGridViewTextBoxColumn();
cols[4].DataPropertyName = "sName";
cols[4].Name = "sName";
cols[4].Width = 216;
cols[4].FillWeight = 50.5166F;
gvPackage.Columns.AddRange(cols);
List<Package> _pl = _______Manager.SHARED_RES;
foreach (Package p in _pl)
{
gvPackage.Rows.Add(
p.ID,
p.iLive,
p.iExplicit,
gImageList.Images["imgNoExplicitNoLive"],
p.sName
);
}
单元格格式:
private void gvPackage_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (gvPackage.Columns[e.ColumnIndex].Name == "Icon")
{
bool isExp = this.gvPackage.Rows[e.RowIndex].Cells[2].Value.ToString() == "1";
bool isLive = this.gvPackage.Rows[e.RowIndex].Cells[1].Value.ToString() == "1";
if (isExp && isLive)
{
e.Value = gImageList.Images["imgExplicitLive"];
}
else
if (!isExp && isLive)
{
e.Value = gImageList.Images["imgNoExplicitLive"];
}
else
if (isExp && !isLive)
{
e.Value = gImageList.Images["imgExplicitNoLive"];
}
else
if (!isExp && !isLive)
{
e.Value = gImageList.Images["imgNoExplicitNoLive"];
}
}
}
形象不佳:
源图:
如有任何帮助,我们将不胜感激。
首先检查 gImageList.Imagesize
!
默认使用 16x16 的方形图片!
在 加载它们之前,将其更改为 Images
的大小:
gImageList.ImageSize = new Size(61,12);
请注意,所有 Images
需要相同 大小。如果没有,您应该更改它们;比 ImageList 应用的拉伸要好得多!
另请注意,ImageList
中的 Images
限于 到 256x256
像素。
您可能还想检查一下您是否对其感到满意 ColorDepth = Depth8Bit
显然您的 Column/Cell
也需要提供足够的 space!
我正在尝试在带有图像列的 datagridview 上显示图像;然而, 它看起来垂直拉伸并水平挤压。我不确定是什么限制了它以这种方式显示。
网格生成
gvPackage.Columns.Clear();
gvPackage.AutoGenerateColumns = false;
DataGridViewColumn[] cols = new DataGridViewColumn[5];
GridColumn gc = null;
cols[0] = new DataGridViewTextBoxColumn();
cols[0].DataPropertyName = "ID";
cols[0].Name = "ID";
cols[0].Visible = false;
cols[1] = new DataGridViewTextBoxColumn();
cols[1].DataPropertyName = "iLive";
cols[1].Name = "iLive";
cols[1].Visible = false;
cols[2] = new DataGridViewTextBoxColumn();
cols[2].DataPropertyName = "iExplicit";
cols[2].Name = "iExplicit";
cols[2].Visible = false;
cols[3] = new DataGridViewImageColumn();
cols[3].Name = "Icon";
cols[3].Width = 70;
cols[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
cols[3].FillWeight = 1F;
cols[4] = new DataGridViewTextBoxColumn();
cols[4].DataPropertyName = "sName";
cols[4].Name = "sName";
cols[4].Width = 216;
cols[4].FillWeight = 50.5166F;
gvPackage.Columns.AddRange(cols);
List<Package> _pl = _______Manager.SHARED_RES;
foreach (Package p in _pl)
{
gvPackage.Rows.Add(
p.ID,
p.iLive,
p.iExplicit,
gImageList.Images["imgNoExplicitNoLive"],
p.sName
);
}
单元格格式:
private void gvPackage_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (gvPackage.Columns[e.ColumnIndex].Name == "Icon")
{
bool isExp = this.gvPackage.Rows[e.RowIndex].Cells[2].Value.ToString() == "1";
bool isLive = this.gvPackage.Rows[e.RowIndex].Cells[1].Value.ToString() == "1";
if (isExp && isLive)
{
e.Value = gImageList.Images["imgExplicitLive"];
}
else
if (!isExp && isLive)
{
e.Value = gImageList.Images["imgNoExplicitLive"];
}
else
if (isExp && !isLive)
{
e.Value = gImageList.Images["imgExplicitNoLive"];
}
else
if (!isExp && !isLive)
{
e.Value = gImageList.Images["imgNoExplicitNoLive"];
}
}
}
形象不佳:
源图:
如有任何帮助,我们将不胜感激。
首先检查 gImageList.Imagesize
!
默认使用 16x16 的方形图片!
在 加载它们之前,将其更改为 Images
的大小:
gImageList.ImageSize = new Size(61,12);
请注意,所有 Images
需要相同 大小。如果没有,您应该更改它们;比 ImageList 应用的拉伸要好得多!
另请注意,ImageList
中的 Images
限于 到 256x256
像素。
您可能还想检查一下您是否对其感到满意 ColorDepth = Depth8Bit
显然您的 Column/Cell
也需要提供足够的 space!