display images in datagrid with Compact Framework

2020-06-24 15:57发布

问题:

is it possible to display an image in a datagrid cell? i'm currently working with compact framework 3.5.

any tips on that?

回答1:

Like the other posters have commented, you're required to roll your own. Luckily, this isn't too difficult.

In my application, I needed a way to draw a 16x16 icon in a particular column. I created a new class that inherits from DataGridColumnStyle, which makes it easy to apply to a DataGrid via a DataGridTableStyle object.

class DataGridIconColumn : DataGridColumnStyle {

public Icon ColumnIcon {
    get;
    set;
}

protected override void Paint( Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight ) {

    // Fill in background color
    g.FillRectangle( backBrush, bounds );

    // Draw the appropriate icon
    if (this.ColumnIcon != null) {
        g.DrawIcon( this.ColumnIcon, bounds.X, bounds.Y );
    }
  }
}

You can see that I defined the public property ColumnIcon so I can specify the icon I need to display outside of this class.

Now, to actually use it on a DataGrid, you'd have a snippet like:

DataGridTableStyle ts = new DataGridTableStyle();

DataGridIconColumn dgic = new DataGridIconColumn();
dgic.ColumnIcon = Properties.Resources.MyIcon;
dgic.MappingName = "<your_column_name>";
dgic.HeaderText = "<your_column_header>";

ts.GridColumnStyles.Add(dgic);

this.myDataGrid.TableStyles.Add( ts );

That's a pretty simple example for applying the DataGridTableStyle -- I actually do a lot of further customization on the rest of my DataGrid columns. But it should get you started on what you want to do.



回答2:

The only way that I know how to do this would be like the trick for rendering textboxes in the grid by using a trick to paint some images over the grid.

One of the CF team posted something about customising the grid on their site.



回答3:

It's the same process as doing multiline rows, changing row colors, making the text right-to-left, or highlighting a row: you have to custom draw.



回答4:

If you are able to use a third-party solution, have a look at Resco SmartGrid.



回答5:

http://www.cf-technologies.net/compactgrid.php. You can use cell's CustomDraw event..