Я хочу создать свой DataGridViewCell
, я создал один из подкласса от DataGridViewTextBoxCell
, называемый MyDGVCell
. Но я хочу передать некоторые параметры MyDGVCell
.Как DataGridViewColumn.CellTemplate принимает параметр?
Если нет параметров, все просто:
myDGV.CellTemplate = new MyDGVCell();
Но я хочу передать параметр, поэтому конструктор моего MyDGVCell имеет принять параметр. Мой код:
myDGV.CellTemplate = new MyDGVCell(aValue);
Теперь все в порядке, но когда я связать свою DataTable с myDGV, он сообщает об ошибке, что: no parameterless constructor is found
. Я проверил, что это связано с моим MyDGVCell
, который действительно не имеет конструктора без параметров.
Итак, мой вопрос: как передать параметр DataGridViewCell
? Если необходим конструктор без параметров, как передать параметр во время выполнения?
Любой совет будет полезен, спасибо большое.
--------- --------- EDIT
Чтобы упростить мой вопрос, я создал новый проект Windows Form, перетащите dataGridView1 моей Form1 и сделать их код в Form_Load события:
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.Columns.Add("dodo", "dodo");
dataGridView1.Columns[0].CellTemplate = new MyCell("prop"); //line 1
//dataGridView1.Columns[0].CellTemplate = new DataGridViewTextBoxCell(); //line 2
dataGridView1.Rows.Add("try make cell");
}
А вот мой настроен DataGridViewCell
class MyCell : DataGridViewTextBoxCell
{
public string MyProperty { get; set; }
public MyCell(string myProp)
: base()
{
this.MyProperty = myProp;
}
}
исход интересно, если я использую код в строке 1, используя свою собственную ячейку, то DataGridView не создает ряд, но если я использую код строки 2, который является обычным TextBoxCell, он создает строку.
Кроме того, если я использую свою ячейку, когда я ввожу что-то в добавленную новую ячейку, она сообщает о той же ошибке: для этого проекта не найден конструктор без параметров.
Так как я могу передать параметр в ячейку во время выполнения? Спасибо