如何调用此方法?

时间:2013-01-12 02:24:45

标签: c#

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

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;
            }



        }
    }

EDITED

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

3 个答案:

答案 0 :(得分:4)

这是一个事件处理程序,你不能自己提出事件,除非:

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

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

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

    dataGridView1_DataBindingComplete(null, null);
    

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

答案 1 :(得分:0)

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

dataGridView1_DataBindingComplete(this, new RoutedEventArs());

如果你想从同一个对象中调用它,应该可以做到。

如果你想重用那段代码,我会把方法中的所有内容都创建一个单独的公共方法,这样你就可以从其他地方和其他对象中调用它。

答案 2 :(得分:0)

这完全取决于功能所在的位置。如果您将其与表单放在同一个类中,则可以在同一范围内调用它。但是从我看到的,这是一个事件处理程序,你不应该调用它,因为它处理dataGridView事件“DataBindingComplete”。有关它的更多信息,请访问this

但是如果你出于某种原因需要打电话,你可以这样做:

dataGridView1_DataBindingComplete(null, null)