C# ReoGrid クリックしたボタンの座標情報が知りたい

タグの編集
投稿者 えんぴー  (社会人) 投稿日時 2024/5/14 14:27:09
こんにちは、お世話になります。
C#でReoGridとSeleniumを利用してChrome操作しようと思っているのですが、
ReoGridの設定が上手くいかないため教えてほしいです。

ソースの一部を抜粋します。

F列とG列にボタンをそれぞれ表示しており、
F列のボタンを押したら同じ行の値を参考に「SubA」を動かし
G列のボタンを押したら同じ行の値を参考に「SubB」を動かしたいと思っています。

ボタン上に「SubA」など表示されるようになったものの、
ここからどうやってSubA、SubBのイベントと紐づけたら良いのかが分かりません。

・クリックした位置の取得方法
 (できたらアドレス、行番号、列番号 すべて知りたいです)

自分でも考え、ググッたりしたのですが情報がなく
C#の基本なのかもしれませんが教えてください。


【以下ソースよりさらに考えた個所】

            //機器とIPのところにボタン表示
            for (int i = 1; i < MaxRow; i++)
            {
                var SubAButton= new ButtonCell("SubA");
                sheet[i, 5] = SubAButton;
                SubAButton.Click += (s, ex) => SubA(s,ex);
//Load環境で「e」を使っているため変えろとでたので「ex」にしました
//これが良いことかどうか不明です…。
            }

        private void SubA(object sender,EventArgs e)
        {
    //実行している行が知りたい
   //senderをローカル?で確認すると、sender→cell→Address でアドレス(F2)とか
     //sender→cell→row で行(0始まり)とかを取得できそうなのですが
     //どうやって出すのかがわからないです。

            var TEST=sender.ToString();//"unvell.ReoGrid.CellTypes.ButtonCell" になった
            e.ToString();//nullになった
        }



-------------
【参考ソース】

       private void Form1_Load(object sender, EventArgs e)
        {
            var sheet = MainReoGrid.CurrentWorksheet;
            int MaxRow = 11;
            int MaxColumn =7 ;

            sheet.DisableSettings(
            // 列の幅の調整を禁止
            WorksheetSettings.Edit_AllowAdjustColumnWidth
            // 行の高さの調整を禁止
            | WorksheetSettings.Edit_AllowAdjustRowHeight
            // 行列のヘッダーを非表示
            | WorksheetSettings.View_ShowHeaders
            // 選択範囲のドラッグによる内容の移動を禁止する
            | WorksheetSettings.Edit_DragSelectionToMoveCells);

            sheet.Rows = MaxRow;
            sheet.Columns = MaxColumn;

            MainReoGrid.DisableSettings(
                //タブ切り替えの画面を非表示
                WorkbookSettings.View_ShowSheetTabControl
                |
                //横スクロールバー非表示
                WorkbookSettings.View_ShowHorScroll
                );

            sheet.SetColumnsWidth(0, 1, 160);//A
            sheet.SetColumnsWidth(1, 1, 130); //B
            sheet.SetColumnsWidth(2, 1, 70);//C
            sheet.SetColumnsWidth(3, 1, 220);//D
            sheet.SetColumnsWidth(4, 1, 220);//E
            sheet.SetColumnsWidth(5, 1, 40);//ボタン1
            sheet.SetColumnsWidth(6, 1, 40);//ボタン2

            sheet.SetRowsHeight(0, MaxRow, 40);//高さ切り替え
            MaxScrollHeight = 40*MaxRow;

            // データ設定
            sheet["A1"] = "A";//0
            sheet["B1"] = "B";//1
            sheet["C1"] = "C";//2
            sheet["D1"] = "D";//3
            sheet["E1"] = "E";//4
            sheet["F1"] = "buttonF";//5
            sheet["G1"] = "ButtonG";//6
            sheet.Ranges["A1:G1"].IsReadonly = true;

            //機器とIPのところにボタン表示
            for (int i = 1; i < MaxRow; i++)
            {
                sheet[i, 5] = new ButtonCell("SubA");
                sheet[i, 6] = new ButtonCell("SubB");
            }
}

投稿者 えんぴー  (社会人) 投稿日時 2024/5/14 16:29:29
自己解決しました。
別でわからないことが出てきたため、再起票して質問させていただきます。

以下のようにするとボタンをクリックした行が取得できました。

((ButtonCell)sender).Cell.Row