Управление хост-Пользователем в ячейке datagridview
Я создал пользовательский элемент управления, который представляет собой комбинацию элемента управления textbox и элемента управления label.
Вот код:
public class UC_AccLedgerInfo: TableLayoutPanel { public TextBox tb_AccLedgerName; public Label lbl_CurrBal; string _ledgerName; public UC_AccLedgerInfo() { InitializeTLP(); } void InitializeTLP() { this.ColumnCount = 1; this.RowCount = 2; this.CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset; this.AutoSize = true; this.RowStyles.Add(new RowStyle(SizeType.AutoSize)); this.RowStyles.Add(new RowStyle(SizeType.AutoSize)); AddControls(); } void AddControls() { TBLedgerName(); LBLCurrBal(); } void TBLedgerName() { if (tb_AccLedgerName == null) tb_AccLedgerName = new TextBox(); tb_AccLedgerName.Anchor = AnchorStyles.Left | AnchorStyles.Right; tb_AccLedgerName.BackColor = Color.AliceBlue; this.Controls.Add(tb_AccLedgerName, 0, 0); } public string LedgerName { get { return _ledgerName; } set { _ledgerName = value; } } void LBLCurrBal() { if (lbl_CurrBal == null) lbl_CurrBal = new Label(); lbl_CurrBal.Anchor = AnchorStyles.Left | AnchorStyles.Right; lbl_CurrBal.Text = String.Format("Curr Bal: {0}", "2000"); lbl_CurrBal.BackColor = Color.AliceBlue; this.Controls.Add(lbl_CurrBal, 0, 1); } }
У меня есть DataGridView (DGV) на форме, на которой мне нужно разместить этот элемент управления.
Я создал пользовательский класс DataGridViewEditingControl для своего пользовательского элемента управления.
Кроме того, соответствующий класс DataGridViewCell. Код для ячейки таков:
class DGVAccLedgerInfoCell : DataGridViewCell { public override Type EditType { get { // Return the type of the editing control the cell uses. return typeof(DGVAccLedgerInfoEditingControl); } } public override Type ValueType { get { // Return the type of the value that NumericCell contains. return typeof(String); } } }
Для этого класса ячеек ничего не отображается на dgv в соответствующих ячейках, так как метод paint не указан выше для класса ячеек.
Один из способов, который я нашел в MSDN Как: элементы управления хостом в ячейках Windows Forms DataGridView[^]
Но в примере, приведенном в ссылке, они использовали DataGridViewTextBoxEditingCell для рендеринга события paint для календаря. Это не будет работать для моего пользовательского элемента управления, так как это комбинация элементов управления, которые должны отображаться как есть.
В моем коде DGV ничего не размещает в соответствующей ячейке, так как событие paint не указано. Я не знаю, как указать событие paint для пользовательского управления.
Пожалуйста, проводите.
Спасибо!
Что я уже пробовал:
Я получил эти ссылки после того, как провел значительное время в google:
Как: элементы управления хостом в ячейках Windows Forms DataGridView[^]
c# - Как нарисовать пользовательский элемент управления на datagridviewcell? - переполнение стека[^]