C# 在datagridview c中调用void函数#

C# 在datagridview c中调用void函数#,c#,datagridview,C#,Datagridview,如何在此datagridview中调用函数?我想在突出显示的datagridview中显示这两个的总和: foreach (DataRow row in dt.Rows) { datagridview_information.Rows.Add(); datagridview_information.Rows[counterSelected].Cells[0].Value = row["BrandName"].ToString();

如何在此data
gridview
中调用函数?我想在突出显示的
datagridview
中显示这两个的总和:

        foreach (DataRow row in dt.Rows) {
           datagridview_information.Rows.Add();
           datagridview_information.Rows[counterSelected].Cells[0].Value = row["BrandName"].ToString();
           datagridview_information.Rows[counterSelected].Cells[1].Value = row["GenericName"].ToString();
           datagridview_information.Rows[counterSelected].Cells[2].Value = row["PresDayOfIntake"].ToString();
           datagridview_information.Rows[counterSelected].Cells[3].Value = row["Status"].ToString();
           datagridview_information.Rows[counterSelected].Cells[4].Value = "5";
           datagridview_information.Rows[counterSelected].Cells[5].Value = medicineLeft();
           datagridview_information.Rows[counterSelected].Cells[7].Value = row["ContainerNumber"].ToString();
           datagridview_information.Rows[counterSelected].Cells[8].Value = row["Status"].ToString(); ;
           counterSelected++;
        }
    }
}

public int medicineLeft()
{
    for (int i = 0; i < datagridview_schedule.Rows.Count; ++i)
    {
        medleft += Convert.ToInt32(datagridview_information.Rows[i].Cells[8]) - Convert.ToInt32(datagridview_medicine.Rows[i].Cells[4]);
        datagridview_information.Rows[i].Cells[5].Value = Convert.ToString(medleft);

    }
    return medicineLeft(); 
} 
foreach(数据行中的数据行){
datagridview_information.Rows.Add();
datagridview_信息。行[counterSelected]。单元格[0]。值=行[“BrandName”]。ToString();
datagridview_信息。行[counterSelected]。单元格[1]。值=行[“GenericName”]。ToString();
datagridview_信息。行[counterSelected]。单元格[2]。值=行[“PreDayOfInTake”]。ToString();
datagridview_信息。行[counterSelected]。单元格[3]。值=行[“状态”]。ToString();
datagridview_信息。行[counterSelected]。单元格[4]。Value=“5”;
datagridview_信息。行[counterSelected]。单元格[5]。值=medicineLeft();
datagridview_信息。行[counterSelected]。单元格[7]。值=行[“ContainerNumber”]。ToString();
datagridview_信息。行[counterSelected]。单元格[8]。值=行[“状态”]。ToString();
反选++;
}
}
}
公共int medicineLeft()
{
对于(int i=0;i
您必须在这里提供更多的代码,我完全不知道您想做什么。其他地方有申报吗

您的medicineLeft()方法正在返回自身,这意味着它将作为无限循环运行,并且可能会在此行引发StackOverflow异常:

datagridview_information.Rows[counterSelected].Cells[5].Value = medicineLeft();

您的medicineLeft方法需要返回一个整数-是否要返回medleft?如果是,将其更改为
return medlight
应该可以解决这个问题。

一个简单的解决方案是更改填充
DataGridView的方式。如果我这样做,我会做以下事情:

  • 创建类对象以在网格中存储所需的数据:

    public class Medicine
    {
        public string BrandName { get; set; }
        public string GenericName { get; set; }
        <... add other properties ...>
    }
    
  • 将集合绑定到
    DataGridView

    datagridview_information.DataSource = GetMedicines(dt.Rows);
    
  • 我发现很容易在表单上创建
    DataGridView
    控件,在设计器中设置列,并在代码中将
    AutoGenerateColumns
    属性设置为
    false
    ,以便网格显示如我所愿。这取决于你想如何处理

    datagridview_information.DataSource = GetMedicines(dt.Rows);