0

我只是一个编程新手,我做了一个函数,只是一个愚蠢的问题和一个非常愚蠢的问题。请不要粗鲁,我如何从不同的表单或类调用这个函数。甚至以相同的形式

public void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
            for (int i = 0; i <= dtInfo.Rows.Count - 2;i++ )
            {
                Battery = Convert.ToDateTime(dtInfo.Rows[i].Cells[5].Value.ToString());
                Oil = Convert.ToDateTime(dtInfo.Rows[i].Cells[14].Value.ToString());
                Fran = Convert.ToDateTime(dtInfo.Rows[i].Cells[12].Value.ToString());
                lastkm = int.Parse(dtInfo.Rows[i].Cells[13].Value.ToString());

            batt = Battery - DateTime.Now;
            doil = Oil - DateTime.Now;
            dfran = Fran - DateTime.Now;

            if (batt.Days <= 7)
            {
               dtInfo.Rows[i].Cells[5].Style.BackColor = Color.Green;

            }
            if (doil.Days <= 7)
            {
                dtInfo.Rows[i].Cells[14].Style.BackColor = Color.Green;
            }
            if (dfran.Days <= 7)
            {
                dtInfo.Rows[i].Cells[12].Style.BackColor = Color.Green;

            }
            if (lastkm <= 500)
            {
                dtInfo.Rows[i].Cells[13].Style.BackColor = Color.Green;
            }



        }
    }

已编辑

第一个打开的表格 当我第一次打开我的表单时,颜色会发生变化,然后当我重新打开它时 重新打开的表格 它不会改变,但是当我跟踪代码时,颜色的值发生了变化,但单元格中的颜色没有变化

4

3 回答 3

4

那是一个事件处理程序,您不能自己引发事件,除非:

  1. 该类公开了一个受保护的(甚至是公共的)方法来直接触发它,但这通常不会在 .NET 类中发生。

  2. 您可以通过执行实际事件所代表的操作来触发它——在您的情况下,当您的网格和源之间的数据绑定完成时。

不过,您可以调用该方法,但它没有任何相关含义,因为您不会引发事件。尽管如此,如果事件逻辑无关紧要并且您只想执行该代码,您可以通过以下方式完成:

dataGridView1_DataBindingComplete(null, null);

但在这种情况下,您可以将该方法的内容包装在一个简单的方法中,该方法返回类型为void,没有参数。

于 2013-01-12T02:28:14.400 回答
0

dataGridView1_DataBindingComplete() 只是一个普通的旧方法

dataGridView1_DataBindingComplete(this, new RoutedEventArs());

如果你想从同一个对象调用它,应该这样做。

如果您想重用该部分代码,我将采用该方法中的所有内容并创建一个单独的公共方法,以便您可以从其他地方和其他对象调用它。

于 2013-01-12T02:29:44.007 回答
0

这完全取决于函数所在的位置。如果您将它与表单放在同一类下,则可以在同一范围内调用它。但据我所知,这是一个事件处理程序,您不需要调用它,因为它处理 dataGridView 事件“DataBindingComplete”。有关它的更多信息,请访问

但是,如果您出于某种原因需要调用它,您可以这样做:

dataGridView1_DataBindingComplete(null, null)
于 2013-01-12T02:29:53.220 回答