c#中DataGridView中的时段时间安排

Posted

技术标签:

【中文标题】c#中DataGridView中的时段时间安排【英文标题】:Periods time schedule in DataGridView in c# 【发布时间】:2021-11-21 21:31:53 【问题描述】:

我有名为 TimesDgv 的 DataGridView 包含学校期间的时间。我想自动生成时间。喜欢这个截图图像。我该怎么做?

这是我的代码

 for (int i = 0; i < TimesDgv.RowCount - 1; i++)
            
                TimesDgv.Rows[i].Cells[1].Value = TimesDgv.Rows[i].Cells[2].Value;
                DateTime time = Convert.ToDateTime(TimesDgv.Rows[i].Cells[1].Value);
                TimesDgv.Rows[i].Cells[2].Value = time.AddMinutes(40).ToString("hh:mm");
            

enter image description here

【问题讨论】:

您能解释一下您的问题吗?你写了一个截图,但没有。 我更新我的帖子 运行发布的代码“之前”网格中有哪些数据?网格有数据源吗? 不,它没有数据源。我有开始时间的组合框,例如我从组合框(8:00)中选择。当我单击我的按钮时,我想在网格中生成时间。如果行是“期间”时间将增加 (40) 分钟,如果“休息”将增加 (5) 分钟。 【参考方案1】:

试试下面的代码,它从组合框中获取初始开始时间值,然后将它与今天的日期结合起来创建一个DateTime 对象。然后通过网格行的简单循环根据“periodName”设置时间值。如果时间段名称是“rest”,那么它会在日期时间上增加 5 分钟,如果时间段名称不是“rest”,那么代码会在 DateTime. 上增加 40 分钟

private void button1_Click(object sender, EventArgs e) 
  string dt = DateTime.Now.ToShortDateString() + " " + comboBox1.Text;
  if (DateTime.TryParse(dt, out DateTime currentTime)) 
    for (int i = 0; i < TimesDgv.RowCount; i++) 
      if (!TimesDgv.Rows[i].IsNewRow) 
        if (TimesDgv.Rows[i].Cells[0].Value != null && !string.IsNullOrEmpty(TimesDgv.Rows[i].Cells[0].Value.ToString())) 
          TimesDgv.Rows[i].Cells[1].Value = currentTime;
          if (TimesDgv.Rows[i].Cells[0].Value.ToString() == "rest") 
            currentTime = currentTime.AddMinutes(5);
          
          else 
            currentTime = currentTime.AddMinutes(40);
          
          TimesDgv.Rows[i].Cells[2].Value = currentTime;
        
      
    
  
  else 
    MessageBox.Show("Invalid time in combo box");
  

【讨论】:

谢谢,成功了!

以上是关于c#中DataGridView中的时段时间安排的主要内容,如果未能解决你的问题,请参考以下文章

将 DataGridView 单元格 BackColor 传递给变量以供以后在 c# 中使用

C#中dataGridView用法集

C#中DataGridView控件绑定数据源有几种方式?

C# 问题:如何将在 DataGridView 中所做的更改保存回使用的 DataTable?

c#求怎么设置datagridview的列宽

如果列索引 0 包含特定字符串 C#,如何隐藏整个 DataGridview 行