我有一个具有数据网格视图的WinForms
桌面应用程序。
它从Sql服务器加载数据,并且表中有一个位列USRstatus
。
表格列如下:
USRstatus(bit) , USERNAME, USERTYPE
当我在DataGridView
中加载表格时,我想显示图像而不是0/1值。
图像在资源中:
Pharm.propreties.recourses.on
Pharm.propreties.recourses.off
编辑 在dgv的负担下,我创建了一个图像列并将其插入
DataGridViewImageColumn IMG =new
DataGridViewImageColumn();
IMG.name="status";
DGVUsers.Columns.Insert(1,IMG);
DGVUsers.Columns["USRStatus"]. Visible=false;
然后我根据USRstatus值的值来填充每一行的值。
for (int i=0;i<DGVUsers.RowCount;i++)
{
If(Convert.ToByte(DGVUsers.Rows[i].Cells["USRStatus"].Value==1)
DGVUsers.Rows[i].Cells["status "].Value=Pharma.Propreties.Recourcess.on;
Else
DGVUsers.Rows[i].Cells["status"].Value=Pharma.Propreties.Recourcess.off;
}
它工作正常,但我想通过替换整个列来做到这一点,并且如果可能的话,不要依赖于另一列来创建新的列
答案 0 :(得分:0)
您可以在DataGridView中使用DataGridViewImageColumn。创建新列时,只需选择类型DataGridViewImageColumn。要更改图像时,只需设置该值即可。
if ()
DataGridView.Rows[0].Cells[0].Value = Pharm.Propreties.Recourses.on;
else
DataGridView.Rows[0].Cells[0].Value = Pharm.Propreties.Recourses.off;
要查看它是打开还是关闭,可以使用equals方法(每种类型都有此方法):
if (DataGridView.Rows[0].Cells[0].Value.Equals(Pharm.Properties.Resources.on)
{ }
另一种方法是使用Tag变量(每个winforms控件都具有此变量-System.Windows.Forms.Control):
DataGridView.Rows[0].Cells[0].Tag = true;
然后,获取其值:
if (DataGridView.Rows[0].Cells.Tag as bool)
{ }
或
if ((bool)DataGridView.Rows[0].Cells.Tag)
{ }
我个人更喜欢as bool
选项,它更加清晰美观。
另一种方法是创建一个新控件,但为此目的,它要复杂得多。
祝你好运!