我想为datagridviewcell
托管自定义控件。
我唯一的好参考是http://msdn.microsoft.com/en-us/library/7tas5c80.aspx
但是,我希望单元格在
上显示我自己的用户控件 public class CustomCell : DataGridViewTextBoxCell
{
protected override void Paint(System.Drawing.Graphics graphics,
System.Drawing.Rectangle clipBounds, System.Drawing.Rectangle cellBounds,
int rowIndex, DataGridViewElementStates cellState, object value, object
formattedValue, string errorText, DataGridViewCellStyle cellStyle,
DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
{
base.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value,
formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
}
}
有谁能指导我怎么做?
答案 0 :(得分:1)
为了节省资源,DataGridView
控件中的单元格大部分时间都处于显示模式,只有当用户使用鼠标或键盘进入单元格时才更改为编辑模式。您在问题中提到的示例被视为最佳做法,因为编辑控件(在这种情况下,DateTimePicker
,但可能很容易就是您自己的自定义用户控件)只出现在编辑模式中,并且因此,一次只能用于一个小区。
当单元格未处于编辑模式时,它应使用Paint
子类的DataGridViewCell
方法内的逻辑呈现其值的等效表示。您可以通过以下几种方式之一完成此任务:
ControlPaint
或VisualStyleRenderer
模拟编辑控件的外观(注意:这涉及大量额外工作)。在大多数情况下,第一种选择就足够了;如果重要的是单元格看起来与编辑控件完全相同,则只尝试其他方法之一。