[C# 윈폼] DataGridView 컨트롤 Row 추가 및 삭제 하기


안녕하세요.

 

오늘은 C# 윈폼에서 DataGridView 컨트롤에 대해서 다뤄 보려고 합니다.

 

그 중에서도, 오늘은 DataGridView 컨트롤에서 Add, Delete 버튼 컨트롤을 추가하여 Add 버튼을 클릭할 시, Row 가 한 줄 추가되고, Delete 버튼을 클릭할 경우 현재 선택된 Row Delete 되도록 한번 예제 프로그램을 작성해 보도록 하겠습니다.


 

먼저 빈 윈폼 프로젝트를 생성해 주시고, 아래와 같이 DataGridView 컨트롤과 Button 컨트롤을 배치해 주시기 바랍니다.


빈 윈폼 프로젝트 생성 및 컨트롤 배치



그럼 이제 Add 버튼을 클릭하면 Row 가 추가되고, Delete 버튼을 클릭하면 현재 선택되어 있는 Row 를 삭제하도록 예제 코드를 작성해 보도록 할게요.


예제 코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace GridViewControlTest

{

    public partial class Form1 : Form

    {

        public int lastRowIdx = -1;

 

        public Form1()

        {

            InitializeComponent();

 

            // Load 이벤트 선언

            this.Load += LoadForm_Test;

 

            //버튼 클릭 이벤트 선언

            uiBtn_Add.Click += uiBtn_Add_Click;

            uiBtn_Delete.Click += uiBtn_Delete_Click;

        }

 

        /// <summary>

        ///  Load 이벤트

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        public void LoadForm_Test(object sender, EventArgs e)

        {

            SetDataGridImage();

        }

 

        /// <summary>

        /// DataGridView (Column, Row) 설정

        /// </summary>

        public void SetDataGridImage()

        {

            uiGrid_Main.ColumnCount = 3//컬럼 카운트 지정

 

            //컬럼 이름 지정

            GetColumnName();

 

            //Row 데이터 지정

            GetRowData();

 

            //이미지 컬럼 추가

            GetImageColumn();

        }

 

        /// <summary>

        /// 컬럼 이름 지정

        /// </summary>

        public void GetColumnName()

        {

            //컬럼 이름 지정

            uiGrid_Main.Columns[0].Name = "Name";

            uiGrid_Main.Columns[1].Name = "Age";

            uiGrid_Main.Columns[2].Name = "Score";

        }

 

        /// <summary>

        /// Row 데이터 지정

        /// </summary>

        public void GetRowData()

        {

            uiGrid_Main.AllowUserToAddRows = false;

 

            uiGrid_Main.Rows.Add("이름1""23""52");

            uiGrid_Main.Rows.Add("이름2""33""62");

            uiGrid_Main.Rows.Add("이름3""43""72");

            uiGrid_Main.Rows.Add("이름4""53""82");

            uiGrid_Main.Rows.Add("이름5""23""22");

            uiGrid_Main.Rows.Add("이름6""54""42");

            uiGrid_Main.Rows.Add("이름7""26""26");

            uiGrid_Main.Rows.Add("이름8""38""88");

 

            lastRowIdx = uiGrid_Main.Rows.Count;

        }

 

        /// <summary>

        /// 이미지 컬럼 생성

        /// </summary>

        public void GetImageColumn()

        {

            //이미지 컬럼 객체 생성

            DataGridViewImageColumn img = new DataGridViewImageColumn();

 

            //리소스에 저장되어 있는 Image 넣기

            Image _image = Properties.Resources.image1;

            img.Image = _image;

 

            //인덱스 3 , 4번째 컬럼에 image 컬럼 추가

            uiGrid_Main.Columns.Add(img);

            img.HeaderText = "ImageColumn";

            img.Name = "img";

        }

 

        /// <summary>

        /// Row 추가 버튼 이벤트

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        public void uiBtn_Add_Click(object sender, EventArgs e)

        {

            lastRowIdx = uiGrid_Main.Rows.Count;

            uiGrid_Main.Rows.Add(); //로우 한줄 추가

        }

 

        /// <summary>

        /// 현재 선택된 Row 삭제

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        public void uiBtn_Delete_Click(object sender, EventArgs e)

        {

            for(int i = 0; i < uiGrid_Main.Rows.Count; i++)

            {

                // 선택 여부

                uiGrid_Main.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

 

                if(uiGrid_Main.Rows[i].Selected == true)

                {

                    //현재 선택된 인덱스에 해당된 Row 삭제

                    uiGrid_Main.Rows.Remove(uiGrid_Main.Rows[i]);

                }

            }

        }

    }

}

 

Colored by Color Scripter

cs

 

실행 결과



 

위와 같이 Add, Delete 버튼이 알맞게 동작하는 것을 확인하실 수 있습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY