2009-06-09 23 views

Antwort

0

Wenn Sie in der Lage sind, eine Lösung von Drittanbietern zu nutzen, müssen Sie einen Blick auf Resco SmartGrid.

9

Wie die anderen Poster kommentiert, müssen Sie Ihre eigenen rollen. Zum Glück ist das nicht allzu schwierig.

In meiner Anwendung brauchte ich eine Möglichkeit, ein 16x16-Symbol in einer bestimmten Spalte zu zeichnen. Ich habe eine neue Klasse erstellt, die von DataGridColumnStyle erbt, wodurch die Anwendung auf ein DataGrid über ein Objekt DataGridTableStyle vereinfacht wird.

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); 
    } 
    } 
} 

Sie können sehen, dass ich die öffentliche Eigenschaft definiert ColumnIcon so kann ich das Symbol angeben ich außerhalb dieser Klasse angezeigt werden müssen.

Nun, um es tatsächlich auf einem Datagrid zu verwenden, würden Sie einen Ausschnitt wie haben:

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); 

Das für die Anwendung der DataGridTableStyle ein ziemlich einfaches Beispiel ist - ich tatsächlich eine Menge weiterer Anpassung an dem Rest meiner DataGrid Spalten. Aber es sollte dir helfen, was du machen willst.

+0

Wenn ich ein Bild in Zelle laden muss ?? Wie mache ich es ? – user3383301

Verwandte Themen