본문 바로가기

C#/Winform

C# FpSpread 특정 셀 클릭 이벤트(cell click event)

반응형

다음과 같은 FarPoint Spread에서 SMS column에 있는 버튼을 클릭했을 때 그 사람에게 SMS를 전송할 수 있게 하는 기능을 추가하려고 했다.

 

 

 

특정 셀을 클릭했을 때만 이벤트를 발생시켜야 하는 것인데, Spread의 CellClick 이벤트객체 e를 잘 사용해서 특정 셀 클릭을 판단할 수 있다.

private void SpreadMain_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
{

       if (e.Column == 8)
       {
            string team = SpreadMain.ActiveSheet.GetText(e.Row, 1);
            string name = SpreadMain.ActiveSheet.GetText(e.Row, 3);
            string phone = SpreadMain.ActiveSheet.GetText(e.Row, 5);
        }

}

 이벤트 객체 e를 사용해서 CellClick 이벤트가 발생했을 때 e.Column으로 어떤 열이 클릭되었는지 알 수 있다. (이벤트 객체 e는 일어난 이벤트에 대한 정보들을 갖고 있다.)

 

if (e.Column == 8 ) : 8번째 Column이 클릭되었을 때를 판단

SpreadMain.ActiveSheet.GetText(e.Row, 1) : 클릭된 Row, 1번 Column의 Text

 

 

 

여기서 더 나아가 SMS Column을 클릭했을 때 그 Row에 해당되는 사람의 정보가 다른 Spread에 넘어가도록 해보자.

SMS Column을 클릭했을 때 위 사진과 같이 받는 사람 목록 Spread에 추가될 수 있도록 해야 한다.

 

private void SpreadMain_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
        {

            if (e.Column == 8)
            {
               
                string team = SpreadMain.ActiveSheet.GetText(e.Row, 1);
                string name = SpreadMain.ActiveSheet.GetText(e.Row, 3);
                string phone = SpreadMain.ActiveSheet.GetText(e.Row, 5);

                spreadSMS.ActiveSheet.AddUnboundRows(spreadSmsRowCount, 1);
                spreadSMS.ActiveSheet.Cells[spreadSmsRowCount, 0].Text = team;
                spreadSMS.ActiveSheet.Cells[spreadSmsRowCount, 1].Text = name;
                spreadSMS.ActiveSheet.Cells[spreadSmsRowCount, 2].Text = phone;

                spreadSmsRowCount += 1;
            }

        }

11~16번 줄 코드를 추가해서 기능을 완성했다.

 

11번 spreadSMS.ActiveSheet.AddUnboundRows( spreadSmsRowCount, 1):

새로운 row 추가를 위해 빈 row를 추가

 

12번 spreadSMS.ActiveSheet.Cells[spreadSmsRowCount, 0].Text = team: 

spreadSMS의 팀 Column에 데이터 추가

 

spreadSmsRowCount는 spreadSMS가 현재 몇 개의 row를 갖고 있는지에 대한 정보를 가지고 있다. 

반응형