私は datagridview でカスタム コントロールをホストしました。CustomControl (サード パーティ コントロール) としましょう。セルは編集モードに入ったときにのみ描画されます。編集モードを終了すると表示されないため、ペイント メソッドをオーバーライドしました (以下を参照)。Windows 7 では正常に動作していますが、Windows XP では動作しません。DrawToBitmap が失敗しています。何か案は?
protected override void Paint(
Graphics graphics,
Rectangle clipBounds,
Rectangle cellBounds,
int rowIndex,
DataGridViewElementStates cellState,
object value,
object formattedValue,
string errorText,
DataGridViewCellStyle cellStyle,
DataGridViewAdvancedBorderStyle advancedBorderStyle,
DataGridViewPaintParts paintParts) { // Call the base class method to paint the default cell appearance.
base.Paint(
graphics,
clipBounds,
cellBounds,
rowIndex,
cellState,
value,
formattedValue,
errorText,
cellStyle,
advancedBorderStyle,
paintParts);
CustomControl customControl= (CustomControl)this.DataGridView.Rows[rowIndex].Cells[this.ColumnIndex].Value;
Bitmap img = new Bitmap(cellBounds.Width, cellBounds.Height);
// Resize propertyEditor control to cell bounds
propertyEditor.Height = cellBounds.Height;
propertyEditor.Width = cellBounds.Width;
// Sets the cell's backcolor according to the data grid view's color
customControl.BackColor = this.DataGridView.Rows[rowIndex].Cells[this.ColumnIndex].Style.BackColor;
// Finally paint the propertyEditor control
customControl.DrawToBitmap(img, new Rectangle(0, 0, customControl.Width, customControl.Height));
graphics.DrawImage(img, cellBounds.Location);
}