
к счастью, я нашел код по этому поводу (это код для свойства AutoSizeColumnsMode == Fill, но мне нужно, чтобы для этого свойства было установлено значение AllCells для более длинные строки внутри каждого столбца)
сначала я подумал, что это тот код, который я ищу:
Код: Выделить всё
private void dataGridView1_Paint(object sender, PaintEventArgs e)
{
int rowHeight = this.dataGridView1.RowTemplate.Height;
Pen slategraypen = new Pen(Brushes.SlateGray,0.5f);
slategraypen.LineJoin = System.Drawing.Drawing2D.LineJoin.Bevel;
slategraypen.Alignment = System.Drawing.Drawing2D.PenAlignment.Center;
int h = this.dataGridView1.ColumnHeadersHeight + (rowHeight) * (this.dataGridView1.NewRowIndex);
Bitmap rowImg = new Bitmap(this.dataGridView1.Width, rowHeight);
Graphics g = Graphics.FromImage(rowImg);
Rectangle rFrame = new Rectangle(1, 1, this.dataGridView1.Width-4, rowHeight);
g.DrawRectangle(slategraypen, rFrame);
Rectangle rFill = new Rectangle(2, 1, this.dataGridView1.Width - 4, rowHeight-1);
g.FillRectangle(Brushes.White, rFill);
// for rowheaders drawing. in my case, I dont want to show the rowheaders so I didnt include this in my code
//Rectangle rowHeader = new Rectangle(2, 2, this.dataGridView1.RowHeadersWidth - 2, rowHeight - 4);
//g.FillRectangle(new SolidBrush(this.dataGridView1.RowHeadersDefaultCellStyle.BackColor), rowHeader);
int w = this.dataGridView1.RowHeadersWidth-40;// -40 is the width of the row header that I dont want to show
for (int j = 0; j < this.dataGridView1.ColumnCount; j++)
{
w += this.dataGridView1.Columns[j].Width;
g.DrawLine(slategraypen, new Point(w, 0), new Point(w, rowHeight));
}
int loop = (this.dataGridView1.Height - h) / rowHeight;
for (int j = 0; j < loop + 1; j++)
{
e.Graphics.DrawImage(rowImg, 0, h + j * rowHeight);
}
}
[img]https:/ /i.stack.imgur.com/Jok6l.png[/img]
Но когда я ввожу длинную строку в столбец, происходит следующее:
обратите внимание на правая часть datagridview, некоторые столбцы сжимаются из-за того, что свойство fill установлено для autosizecolumnsmode

Я пытался изменить свойство AutoSizeColumnsMode на allcells, и это произошло:
каждый раз, когда я прокручивал горизонтальную полосу прокрутки, линии, нарисованные ниже, рисовались неправильно места. я не совсем уверен, произойдет ли то же самое, если я прокрутлю вертикальную полосу прокрутки вверх и вниз.
[img]https:/ /i.stack.imgur.com/HUn4E.png[/img]
Мне нужна ваша помощь в написании правильного кода для этого. Буду очень признателен за вашу помощь.
Подробнее здесь: https://stackoverflow.com/questions/527 ... ta-c-sharp
Мобильная версия