关于 c#:Datagridview 列宽不变

Datagridview Column width not changing

这是属性 |这是图片

我似乎无法在 Datagridview 中调整我的列宽。这是我的代码:

      public void dgvwidth()
    {
        crud.FillDataGrid("Select ProductID,BrandName,Dosage from ProductItems", ref dgvOrderproductlist);
        dgvOrderproductlist.Columns[0].Width = 80;
        dgvOrderproductlist.Columns[1].Width = 250;
        dgvOrderproductlist.Columns[2].Width = 80;
    }
      private void HomePage_Load(object sender, EventArgs e)
    {
        dgvwidth();
    }

我试图从我的表中只获取 3 列,并更改它的列宽以适合我的 Datagridview。它没有出现任何错误,但也没有改变列宽。

    public void FillDataGrid(string sql, ref DataGridView dg)
    {
        try
        {
            DataSet ds = new DataSet();
            cn.Open();
            cmd = new SqlCommand(sql, cn);
            adptr = new SqlDataAdapter(cmd);
            adptr.Fill(ds);
            dg.DataSource ="";
            dg.DataSource = ds.Tables[0];
            dg.AutoResizeColumns();

        }
        catch (Exception e)
        {
            MessageBox.Show("" + e.Message);
        }
        cn.Close();
    }

相关讨论

  • 查看列的 AutoSizeMode,大多数情况下,宽度被忽略,AutoSizeMode 确定实际大小。 (将其设置为 "None"),尽管如果您试图让列实际填充 datagridview,您可能希望将 1 列设置为 Fill。
  • 先生,它设置为"无"。
  • 而且DataGridView的AutoSizeColumnsMode也设置为none?
  • 我以为您已经指的是设置为 none 的 AutoSizeColumnsMode。我在哪里可以找到列的 AutoSizeMode?
  • dgvOrderproductlist.Columns[0].AutoSizeMode
  • "dgvOrderproductlist.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;" 喜欢这个先生?我把它放在我的代码中仍然没有用
  • 假设datagridview的宽度是80 80 250?您可以添加您所看到的图片吗?
  • 我在上面添加了图片先生。
  • 还添加了属性
  • 错误在于事件。你不应该在加载事件上做这样的事情。不知何故,您的代码可能会被覆盖
  • 那我应该把它放在哪里,先生?并且没有错误。它只是没有调整大小。
  • 这是一个"错误",因为没有调整大小。无论如何,我会把它放在激活的表格上。只是为了确保它在一切结束时完成。这可能有帮助
  • 我把它放在激活状态,但仍然没有做任何事情,先生。
  • 您能否从 Designer.cs 文件中添加相关代码,显示在 dgvOrderproductlist 和所有列上设置的所有内容?
  • 你能显示 FillDataGrid 代码吗?也许你在里面做点什么。我的快速测试按预期工作,除了虚拟数据源之外,它几乎与您的代码相同。
  • @CharlesMay 我添加了代码先生
  • 哦,我认为它是该方法的自动调整大小
  • 是的,我会在您的 FillDataGrid 方法中注明 AutoResizeColumns() ,看看是否可以解决您的问题。
  • @CharlesMay 这解决了问题,非常感谢先生。

你能这样试试吗

 public void dgvwidth()
{
    crud.FillDataGrid("Select ProductID,BrandName,Dosage from ProductItems", ref dgvOrderproductlist);

 var column = dgvOrderproductlist.Columns[0];
 column.Width = 80;

 column  = dgvOrderproductlist.Columns[1];
 column.Width = 250;
  column  =     dgvOrderproductlist.Columns[2];
  column.Width = dgvOrderproductlist.Width - dgvOrderproductlist.Columns[0].Width - dgvOrderproductlist.Columns[1].Width - 50;

 }

相关讨论

  • 我假设 AutoSize 设置为 none 。
  • 是的,先生,它设置为无。我试过你的代码仍然没有做任何没有错误的事情。

以上是关于 c#:Datagridview 列宽不变的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>