0

私は DataGridView とセットを使用しています:

AutoSizeRowsMode = DisplayedCell

&

RowDefaultCellStyle: WrapText=True

結果:

ここに画像の説明を入力

行数の DataGridView で注文を取得するにはどうすればよいですか。たとえば、写真で。行 = 8。

写真で:

Row1 = 2 Line & Row2 = 1 Line & Row3 = 4 Line & Row4 = 1 Line. -----> Line = 8
4

1 に答える 1

2

最善の策はMeasureString()、現在のフォントとセル幅に基づいて使用することです。これがあなたが望むことをするコードです:

private int CountLines(DataGridView dataGridView)
{
    int totalLineCount = 0;
    using (Graphics graphics = Graphics.FromHwnd(this.Handle))
    {
        SizeF baselineSize = graphics.MeasureString("test line", dataGridView.Font);
        foreach (DataGridViewRow row in dataGridView.Rows)
        {
            int cellLineCount = 0;

            foreach (DataGridViewCell cell in row.Cells)
            {
                if (cell.Value == null)
                {
                    continue;
                }

                string value = cell.Value.ToString();
                SizeF size = graphics.MeasureString(value, dataGridView.Font, cell.Size.Width);
                int lines = (int)Math.Round(size.Height / baselineSize.Height);
                cellLineCount = Math.Max(cellLineCount, lines);
            }

            totalLineCount += cellLineCount;
        }
    }

    return totalLineCount;
}
于 2012-06-20T04:48:35.870 に答える