В моем DataGridView
мне удалось использовать свойства DividerHeight
& Height
строки в моем DGV, чтобы добавить пробел между строками. Мой основной DGV со столбцом кнопки, который добавляет к высоте делителя: ![dividerheight changed](https://i.stack.imgur.com/SweYI.gif)
Я хочу поместить еще один DataGridView
в это пространство, но я не думаю, что есть какой-либо способ разместить Контроль в самом ряду. Я попытался отредактировать поля нового элемента управления DataGridView, чтобы посмотреть, смогу ли я разместить его в parentDGV, чтобы он поместился в этот разделитель между строками, но новый DGV просто заполняет все пространство под заголовками столбцов parentDGV независимо от значение поля или настройка Dock
нового DGV. то есть это: ![the new DGV control being added](https://i.stack.imgur.com/tqiBC.gif)
вот мой код:
DataGridView newDGV = Program.GetGridView();
//-------------------------------------------------setting edits-----
newDGV.Dock = DockStyle.None;
newDGV.Visible = true;
newDGV.Name = senderDGV.Name + "/" + e.RowIndex.ToString() + "," + senderDGV.Columns[e.ColumnIndex].Name;
//-------------------------------------------------------------------
MenuStrip newMenuStrip = Program.GetSubMenuStrip();
senderDGV.Controls.Add(newDGV);
//not sure how to use "Thickness" value type
var margin = newDGV.Margin;
margin.Top = (int)((e.RowIndex > 0 ? GetDataGridViewHeightAtRow(senderDGV, e.RowIndex - 1) : 0) + senderDGV.RowTemplate.Height);
Console.WriteLine("top margin =" + margin.Top.ToString());
//add up height before row to place new dgv into
newDGV.Margin = margin;
DatabaseFunct.LoadTable(newDGV);
//add menu strip to new dgv
newDGV.Controls.Add(newMenuStrip);
int nDGVHeight = newDGV.ColumnHeadersHeight + newDGV.RowTemplate.Height * newDGV.Rows.Count;
//test
senderDGV.Rows[e.RowIndex].DividerHeight = nDGVHeight + 10;
senderDGV.Rows[e.RowIndex].Height = senderDGV.RowTemplate.Height + nDGVHeight + 10;
Редактировать -------------- ------------
Я понял, что Location
- это свойство, которое контролирует положение элементов управления, которые я добавляю в DataGridView. Новые проблемы: Location
относится к самому окну, а не к строкам DGV. Поэтому прокрутка строк вверх или вниз не влияет на расположение добавленного элемента управления.
В целом, даже если это все, с чем мне приходится работать, я, вероятно, смогу исправить это, обновив позиции новых DGV на «событии прокрутки DGV» и некотором «событии изменения размера окна»
Я все еще ищу альтернативное решение, которое не требует связки кода для постоянной обработки расположение элементов управления в окне, если это возможно.