0

私はプログラミングの初心者で、関数を作成しました。1つの愚かな問題と、非常に愚かな質問です。失礼なことはしないでください。別の形式またはクラスからこの関数を呼び出すにはどうすればよいですか。または同じ形でも

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 に答える