【问题标题】:VB.NET 2010 dynamically adjusting datagridview color codeVB.NET 2010 动态调整datagridview颜色代码
【发布时间】:2016-05-27 00:16:46
【问题描述】:

我正在制作一个程序,帮助我为我目前实习的一家公司安排员工和工作。大多数事情进展顺利,但我陷入了这个特殊问题:

我有一个颜色代码,可以快速显示按时完成工作的可能性。 绿色很有可能黄色有可能红色 >不太可能。我希望根据在相关工作之前完成每项工作的估计时间来确定每项工​​作的颜色代码。我想为每项工作都这样做。

This is a picture of the list of active jobs。目前,该程序使用所有作业的总和,即在相关作业之前和之后到期的作业。我想做的唯一改变是只为相关工作之前的工作执行此操作。

这是我目前用来对“状态”列进行颜色编码的代码

编辑

现在发布更正的代码,非常感谢 vbnet3d

Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
    Dim ts As TimeSpan
    Dim now As Date = DateTime.Now.ToString("MM/dd/yyyy")
    Dim cdout As Date

    Me.JobDetailsBindingSource.Filter = String.Format("Crate_Date >= '" & now & "'")

    For i As Integer = 0 To Me.Active_Jobs_List.Rows.Count - 1
        Dim dayout As Date
        Dim dayout1 As Date
        Dim daysum As Integer = 0
        For x As Integer = 0 To i
            If (Date.TryParseExact(Me.Active_Jobs_List.Rows(x).Cells(6).Value, pattern, Nothing, DateTimeStyles.None, dayout)) >= (Date.TryParseExact(Me.Active_Jobs_List.Rows(i).Cells(6).Value, pattern, Nothing, DateTimeStyles.None, dayout1)) Then
                daysum = daysum + Active_Jobs_List.Rows(x).Cells(45).Value
            End If
        Next
        If Date.TryParseExact(Active_Jobs_List.Rows(i).Cells(6).Value, pattern, Nothing, DateTimeStyles.None, cdout) = True Then
            ts = cdout.Subtract(now)
            TextBox1.Text = Format(ts.TotalMinutes, 0) - daysum
        End If
        Me.Active_Jobs_List.Rows(i).Cells("Cdate_Minus_Now").Value = TextBox1.Text

        If (Me.Active_Jobs_List.Rows(i).Cells("Cdate_Minus_Now").Value) <= 2880 Then
            Me.Active_Jobs_List.Rows(i).Cells("Current_Status").Style.BackColor = Color.Red


        ElseIf (Me.Active_Jobs_List.Rows(i).Cells("Cdate_Minus_Now").Value) <= 5760 And Me.Active_Jobs_List.Rows(i).Cells("Cdate_Minus_Now").Value > 2880 Then
            Me.Active_Jobs_List.Rows(i).Cells("Current_Status").Style.BackColor = Color.Yellow


        ElseIf (Me.Active_Jobs_List.Rows(i).Cells("Cdate_Minus_Now").Value) > 5760 Then
            Me.Active_Jobs_List.Rows(i).Cells("Current_Status").Style.BackColor = Color.Green

        End If
    Next

End Sub

我是 vb.net 的初学者,所以如果您发现代码有任何其他问题,请随时提及。谢谢大家。

【问题讨论】:

  • 只是一个想法……假设您实际上没有任何上限,您也许可以将ElseIf (Me.Active_Jobs_List.Rows(i).Cells("Cdate_Minus_Now").Value) &lt;= 999999 And Me.Active_Jobs_List.Rows(i).Cells("Cdate_Minus_Now").Value &gt; 5760 Then 缩短为ElseIf Me.Active_Jobs_List.Rows(i).Cells("Cdate_Minus_Now").Value &gt; 5760 Then
  • 为了澄清这个问题,您想根据当前工作之前的所有工作的总和来计算工作完成的概率,对吗?
  • 啊,没错,我会改的。
  • 但是,是的,这就是我的目标。理想情况下,它实际上是在同一天和当前作业之前的所有作业。当前的只是程序恰好在的任何行“i”
  • 你应该做一个循环,从与当前行同一天的第一条记录开始,到当前行,并将所有值相加到该点。

标签: vb.net datagridview


【解决方案1】:

您可以在主循环中创建一个循环,该循环创建与当前作业在同一天创建的所有作业的总和,然后在您的逻辑中使用该总和。

类似的东西:

For i As Integer = 0 To Me.Active_Jobs_List.Rows.Count - 1

Dim daySum As Integer

    For x As Integer = 0 To i
        If Active_Jobs_List.Rows(x).Cells("Crate_date").Value = Active_Jobs_List.Rows(i).Cells("Crate_date").Value Then
            daySum = daySum + Active_Jobs_List.Rows(x).Cells(45).Value
        End If
    Next


[Your current code - use daySum here]

Next

【讨论】:

  • 非常感谢!代码仍然在该设置中运行,但我仍然遇到相同的问题。如果我一个接一个地添加板条箱日期,它仍然会影响旧的板条箱日期。为了比较 Active_Jobs_List.Rows(x).Cells("Crate_date") = Active_Jobs_List.Rows(i).Cells("Crate_date") 我必须将它们的值转换为字符串,因为它不会让我比较两个带有“=”符号。不知道这是否会丢掉它,但我认为它不会
  • @JacobLatham 除非我遗漏了什么,否则您应该像(Me.Active_Jobs_List.Rows(i).Cells("Cdate_Minus_Now").Value) - daySum &lt;= 5760 一样使用它。我这种方式,你不用把它加到后面的日期,而只是简单的在比较语句中使用它。此外,您应该编辑您的问题以反映您所做的更改。
  • 我不确定我解释得是否准确。确实,该列应该是板条箱日期减去今天的日期(用户登录程序时)减去每项作业完成之前所需的分钟数。代码TextBox1.Text = Format(ts.TotalMinutes, 0) - daysumMe.Active_Jobs_List.Rows(i).Cells("Cdate_Minus_Now").Value = TextBox1.Text 应该负责我认为的计算。最后,该列应显示公司需要多长时间才能完成这项工作。虽然就像我说的那样,我在这里做的其他事情很可能是不正确的
  • 好吧...是的,我相信是这样,基于你已经拥有的。关于您可以做得更好的地方,请在代码顶部使用Option Strict On...您无意中进行了许多隐式转换(字符串到整数,反之亦然)。这可能会损害程序的性能并产生错误。
  • 查看我对“=”问题的编辑...使用.Value。我最初错过了。
猜你喜欢
  • 1970-01-01
  • 2016-08-09
  • 2014-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 2013-06-16
相关资源
最近更新 更多