如果数据网格内容超过特定宽度

时间:2015-09-02 13:43:21

标签: c# .net datagridview cell

我希望通过以下代码在C#中的网格视图中显示数据库数据:

 public void Selectalbums()
        {
            string QuerySelect = "select * from albums_tbl ";
            SQLiteCommand cmd = new SQLiteCommand(QuerySelect, cn );
            SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            dataGridView2.DataSource = dt;
        }

现在,当我想在一个单元格中显示一个大字符串时,它并没有显示出来! 我怎样才能做到这一点 : enter image description here

我为列的单元格设置了最大宽度(例如250 px),如果字符串大于250像素,它将以多行模式显示! 我在stackoverflow和其他网站上搜索了它,但我注意到找到了解决方案

宽度是Constante但是当搅拌变大时,这个细胞将是多线的

我正在使用。 NET Framework 3.5

enter image description here

1 个答案:

答案 0 :(得分:1)

我不确定你是如何设置列的最大宽度的。但如果最大宽度等于列的实际宽度,那么答案就是:

dataGridView1.Columns[columnIndex].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dataGridView1.AutoResizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;

正如hereherenumerous other places所述。

如果它们不相同,那么您可能会遇到以下情况:

  1. 单元格值适合单元格宽度。
    • 正常显示。
  2. 单元格值比单元格宽度长但短于最大宽度。
    • 用省略号显示。
  3. 单元格值比单元格宽度和最大宽度长。
    • 显示为多行/包裹单元格。
  4. 处理它非常相似,但是逐个单元而不是整个列。以下是一个例子:

    private int column0MaxWidth = 100;
    this.dataGridView1.Columns[0].Width = 55;
    this.dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
    
    // For contrast - column 1 contains the same data but is autosized.
    this.dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    
    // On cell formatting, change a cell to single-lined or multilined.
    void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
      DataGridViewTextBoxCell cell = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewTextBoxCell;
    
      if (cell != null && e.ColumnIndex == 0)
      {
        cell.Style.WrapMode = TextRenderer.MeasureText(cell.Value.ToString(), cell.Style.Font).Width > column0MaxWidth ? DataGridViewTriState.True : DataGridViewTriState.NotSet;
      }
    }
    

    Wrapped vs unwrapped cell

    根据您设置每列的最大宽度,可以很容易地对多列进行调整。