C# Datagridview:DataGridViewImageColumn显示一个红十字

C# Datagridview:DataGridViewImageColumn显示一个红十字,c#,datagridview,C#,Datagridview,我有一个datagridview,由一个DataTable提供,我在其中添加了一个额外的dataGridViewImageColumn。但是,不会在添加的列中显示正确的标志(图片),而是显示一个红十字 我整个下午都在谷歌上搜索这个问题,仍然不知道我做错了什么。有什么想法吗 提前感谢你的帮助 private void displayMeteoCities() { DataTable l_Table = null; ClsCountriesFactor

我有一个datagridview,由一个DataTable提供,我在其中添加了一个额外的dataGridViewImageColumn。但是,不会在添加的列中显示正确的标志(图片),而是显示一个红十字

我整个下午都在谷歌上搜索这个问题,仍然不知道我做错了什么。有什么想法吗

提前感谢你的帮助

    private void displayMeteoCities()
    {
        DataTable l_Table = null;
        ClsCountriesFactory l_Countries = null;
        DataGridViewImageColumn l_ImageColumn = null;
        Bitmap l_Flag = null;
        string l_Country = string.Empty;

        try
        {
            this.m_Meteo_Cities = new ClsMeteoCitiesFactory();
            this.m_Meteo_Cities.getMeteoCities();
            l_Table = ClsDomoosManagerCore.CreateDataTable(this.m_Meteo_Cities.Meteo_Cities);
            this.dgr_Meteo_Cities.DataSource = l_Table;


            l_ImageColumn = new DataGridViewImageColumn();
            // l_ImageColumn.DisplayIndex = 0;
            l_ImageColumn.Width = 50;
            l_ImageColumn.Name = "Country_flag";
            //l_ImageColumn.SortMode = DataGridViewColumnSortMode.NotSortable;
            this.dgr_Meteo_Cities.Columns.Add(l_ImageColumn);

            l_Countries = new ClsCountriesFactory();
            l_Countries.loadCountryFlags();

            this.dgr_Meteo_Cities.RowsDefaultCellStyle.BackColor = Color.Moccasin;
            this.dgr_Meteo_Cities.AlternatingRowsDefaultCellStyle.BackColor = Color.GreenYellow;

            for (int i = 0; i < this.dgr_Meteo_Cities.Rows.Count; i++)
            {
                l_Country = Convert.ToString(this.dgr_Meteo_Cities["iso_country", i].Value);
                l_Flag = l_Countries.Flags[l_Country];
                this.dgr_Meteo_Cities[7, i].Value = l_Flag;
            }

        }
        catch (Exception exc)
        {
            ClsErrorManager.manageException(exc);
        }
        finally
        {
            l_Table = null;
            l_Flag = null;
        }
}
private void displaymetocities()
{
DataTable l_Table=null;
CLSContriesFactory l_Countries=null;
DataGridViewImageColumn l_ImageColumn=null;
位图l_标志=空;
string l_Country=string.Empty;
尝试
{
this.m_Meteo_Cities=新的社区工厂();
这是.m_Meteo_Cities.getMeteCocities();
l_Table=ClsDomoosManagerCore.CreateDataTable(this.m_Meteo_Cities.Meteo_Cities);
this.dgr_Meteo_Cities.DataSource=l_表;
l_ImageColumn=新的DataGridViewImageColumn();
//l_ImageColumn.DisplayIndex=0;
l_ImageColumn.Width=50;
l_ImageColumn.Name=“国旗”;
//l_ImageColumn.SortMode=DataGridViewColumnSortMode.NotSortable;
this.dgr_Meteo_Cities.Columns.Add(l_ImageColumn);
l_Countries=新CLSContriesFactory();
l_Countries.loadCountryFlags();
this.dgr_Meteo_Cities.RowsDefaultCellStyle.BackColor=Color.Moccasin;
this.dgr_Meteo_Cities.alternatingrowsedefaultcellstyle.BackColor=Color.GreenYellow;
对于(int i=0;i
我知道这是个老问题,但希望将来能解决一些人的挫折

虽然我几乎总是建议在使用设计器时不要摆弄控件构造函数,但在这种情况下,这是正确的处理方法。在
InitializeComponent
例程中找到图像列(而不是
DataGridView
),并添加以下行,用图像列的名称替换
ImageColumn

VB.Net

Me.ImageColumn.DefaultCellStyle.NullValue = Nothing
C#


一个红色的十字架(假设它是一个红色的X)意味着找不到图像。检查你的图像所在的路径。我已经检查过了-谢谢,它修好了吗?不,它没有。。。我对自己的道路有100%的把握。所有图片都在我的资源中非常感谢@RazorKillBen,你的解决方案确实帮了我很多。(如果你能投票支持我的问题,我将不胜感激,这将有助于人们认识到你的解决方案肯定是非常有效的)。祝你度过愉快的一天。哇,很高兴听到它帮助了三年!我已经这么做了,祝你好运。
{
    this.ImageColumn.DefaultCellStyle.NullValue = null;
}