手动添加列
dcn = new DataGridViewTextBoxColumn();
dcn.ReadOnly = false;
dcn.Name = "结算所占比例";
dcn.Tag = "";
dcn.HeaderText = "结算所占比例";
dcn.Width = 80;
dcn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
dcn.DefaultCellStyle.SelectionForeColor = Color.Black;
dcn.DefaultCellStyle.SelectionBackColor = Color.Bisque;
dcn.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dcn.MaxInputLength = 4;
dcn.SortMode = DataGridViewColumnSortMode.NotSortable;
this.dataGridView1.Columns.Add(dcn);for (int i = 0; i < Tab2.Rows.Count; i++)
{
  this.dataGridView1["结算所占比例", i].Value = Math.Round(fun.val(Tab2.Rows[i]["kcssje"].ToString().Trim()) / ht2, 4) * 100 + "%";
}当数据窗体以MDI子窗体显示时,此列没有数据,但是单独作为一个窗体打开时此列有数据????

解决方案 »

  1.   

    单从你给出的代码,看不出问题所在呢!你自己设个断点在这一句:
     this.dataGridView1["结算所占比例", i].Value = Math.Round(fun.val(Tab2.Rows[i]["kcssje"].ToString().Trim()) / ht2, 4) * 100 + "%"; 并加一条:
    Console.WriteLine(fun.val(Tab2.Rows[i]["kcssje"].ToString().Trim()));检查是否有值输出.应该不是dcn列的原因.
      

  2.   

    好像是DataGridView的本身问题,动态添加列到DataGridView.Columns,该列的数值会无法显示.
    你试试用UI设计器来添加列来看看.应该就正常了!
      

  3.   

    跟踪一下,看看在MDI情况下有没有值。
      

  4.   

    在MDI下用断点跟踪了。有值的?四楼能否告诉怎样使用UI,或这方面的网址?
      

  5.   

    在MDI下用断点跟踪了。有值的?四楼能否告诉怎样使用UI,或这方面的网址?