投稿者 えんぴー  (社会人) 投稿日時 2024/5/30 16:06:13
以下の条件で条件付き書式を付けたいと思います。

A列は特定文言のみ(果物、野菜、肉など…)
B列は1~25の数値のみ
C~E列も特定文言のみ(りんご、バナナ、キャベツ、ピーマン、豚など)

セルの入力方式としては
・ほかのExcelなどからコピペOK
・セルが変化したタイミングでセルを精査
 →おかしなものがあれば背景色を赤にしたりする
・エラーが全部解消するまでは、「確定」のボタンを押せない

みたいにしようと思っています。
「CellDataChanged」が良いと見たので、
フォームのロード時に以下追記しました。


private void Form1_Load(object sender, EventArgs e)
   {
  sheet = ReoGrid1.CurrentWorksheet;
  sheet.CellDataChanged += (s, ex) => {
      CellDataChangeCheck(s, ex);
  };



  public void CellDataChangeCheck(object sender, ここが分からない)
   {
//eのイベント名をどうしたらいいか分からない
  }



CellAfterEditEventArgs?

変化のあったセル位置をすべて取得し、
こちらで定義しているものと違えば背景をピンクに
合っていれば真っ白なままなどにしたいと思っています。

とりあえず変更のあったすべての位置だけでも取得できれば良いと思うのですが
eのイベント名?イベントハンドラー?を何にしたら良いか分かりません。

Mouse_Clickなど、既に定義されているイベントは
ダブルクリックで自動作成されるため問題なく作れています。

どういうイベント名?にしたらいいのでしょう。
調べ方も良く分かりません。

とりえあず以下のようにしてみたのですが、
この内容で不具合等考えられますでしょうか?

        public void CellDataChangeCheck(object sender, CellEventArgs e)
        {
            if (sheet.SelectionRange.Row != 0)
            {
                switch (sheet.SelectionRange.Col)
                {
                    case 0:
                        Console.WriteLine("A");
                        break;
                    case 1:
                        Console.WriteLine("B");
                        break;
                    case 2:
                        Console.WriteLine("C");
                        break;
                    case 3:
                        Console.WriteLine("D");
                        break;
                    case 4:
                        Console.WriteLine("E");
                        break;
                    case 5:
                        Console.WriteLine("F");
                        break;
                    default:
                        break;
                }
            }
        }