我只是编程的新手,我做了一个函数,只是一个愚蠢的问题和一个非常愚蠢的问题。请不要粗鲁,我如何从不同的形式或类别调用此函数。甚至以相同的形式
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
当我第一次打开我的表格颜色改变然后当我重新打开它 它不会改变,但是当我跟踪代码时,颜色的值会发生变化但不是单元格中的颜色
答案 0 :(得分:4)
这是一个事件处理程序,你不能自己提出事件,除非:
该类公开了一个受保护的(甚至是公共的)方法来直接触发它,但这通常不会发生在.NET类中。
通过执行实际事件代表触发它 - 在您的情况下,当您的网格和源之间的数据绑定完成时。
但是,您可以调用该方法,但它没有任何相关含义,因为您不会引发该事件。但是,如果事件逻辑无关紧要并且您只想执行该代码,则可以通过以下方式执行:
dataGridView1_DataBindingComplete(null, null);
但是在这种情况下,您可以将该方法的内容包装在一个返回类型为void
并且没有参数的简单方法中。
答案 1 :(得分:0)
dataGridView1_DataBindingComplete()只是一个普通的旧方法
dataGridView1_DataBindingComplete(this, new RoutedEventArs());
如果你想从同一个对象中调用它,应该可以做到。
如果你想重用那段代码,我会把方法中的所有内容都创建一个单独的公共方法,这样你就可以从其他地方和其他对象中调用它。
答案 2 :(得分:0)
这完全取决于功能所在的位置。如果您将其与表单放在同一个类中,则可以在同一范围内调用它。但是从我看到的,这是一个事件处理程序,你不应该调用它,因为它处理dataGridView事件“DataBindingComplete”。有关它的更多信息,请访问this。
但是如果你出于某种原因需要打电话,你可以这样做:
dataGridView1_DataBindingComplete(null, null)