是否有任何方法在運行時將標籤插入到DataGridView單元格 - 例如,我想在每個單元格的頂部角落中插入一個紅色小數字?我是否需要創建一個新的DataGridViewColumn類型,或者在填充DataGridView時只需添加一個Label?如何添加標籤到DataGridView單元格
編輯我現在在嘗試做這個使用Cell畫爲每Neolisk的建議,但我不確定如何真正得到要顯示的標籤。我有下面的代碼,在那裏我現在設置前添加標籤文本作爲細胞的Tag
其Value
:
private void dgvMonthView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
DataGridView dgv = this.dgvMonthView;
DataGridViewCell cell = dgv[e.ColumnIndex, e.RowIndex];
Label label = new Label();
label.Text = cell.Tag.ToString();
label.Font = new Font("Arial", 5);
label.ForeColor = System.Drawing.Color.Red;
}
誰能解釋:我現在就可以「附加」 label
到cell
?
EDIT 2 - 解決方案我不能完全得到它的工作上面的方式,讓已經結束了子類的DataGridViewColumn和細胞並重寫Paint
事件有使用的DrawString添加任何文本存儲在Tag
而不是一個標籤按neolisk的建議:
class DataGridViewLabelCell : DataGridViewTextBoxCell
{
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);
if (base.Tag != null)
{
string tag = base.Tag.ToString();
Point point = new Point(base.ContentBounds.Location.X, base.ContentBounds.Location.Y);
graphics.DrawString(tag, new Font("Arial", 7.0F), new SolidBrush(Color.Red), cellBounds.X + cellBounds.Width - 15, cellBounds.Y);
}
}
}
public class DataGridViewLabelCellColumn : DataGridViewColumn
{
public DataGridViewLabelCellColumn()
{
this.CellTemplate = new DataGridViewLabelCell();
}
}
實現爲:
DataGridViewLabelCellColumn col = new DataGridViewLabelCellColumn();
dgv.Columns.Add(col);
col.HeaderText = "Header";
col.Name = "Name";
您是否嘗試過自定義單元格繪畫?您應該可以完成任何類型的自定義繪圖,包括角落中的小標籤。 [見此](http://social.msdn.microsoft.com/Forums/en/winforms/thread/07071c24-d0c4-4952-8e53-fe0d2bf20641)。 – Neolisk
謝謝,這聽起來像它可能是理想的,但仍然不知道如何實際添加標籤。我用示例更新了我的問題 – CrazyHorse