2013. 9. 18. 21:16
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // 데이터 소스 생성 ListproductList = new List () { new Product { ID=1, Name="빨간모자" }, new Product { ID=2, Name="주황모자" }, new Product { ID=3, Name="노랑모자" } }; // 그리드뷰에 데이터 소스 바인딩 dataGridView1.DataSource = null; dataGridView1.DataSource = productList; // 그리드뷰에 버튼 컬럼 추가 // - 버튼을 추가하는 것이 아니라 // - 버튼 모양을 하고 있는 컬럼(셀)을 추가하는 것이다. DataGridViewButtonColumn btnColumn = new DataGridViewButtonColumn(); btnColumn.HeaderText = "ButtonColumn"; btnColumn.Name = "buttonColumn"; btnColumnIdx = dataGridView1.Columns.Add(btnColumn); // 버튼 모양의 셀에 텍스트 설정 // - 버튼 자체에 텍스트를 설정할 수는 없다. // - 왜냐하면 실제로는 버튼이 아니기 때문이다. // - 버튼 모양을 하고 있는 셀이다. foreach (DataGridViewRow row in dataGridView1.Rows) row.Cells[btnColumnIdx].Value = "상세보기"; // 그리드뷰 셀클릭 이벤트 핸들러 설정 // - 버튼 자체에 이벤트를 설정할 수는 없다. // - 왜냐하면 실제로는 버튼이 아니기 때문이다. // - 버튼 모양을 하고 있는 셀이다. dataGridView1.CellClick += dataGridView1_CellClick; } int btnColumnIdx; void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { // 버튼 클릭 이벤트 설정 // - 그리드뷰를 클릭했을 때, 버튼 컬럼 인덱스와 같으면 처리를 한다. // - 이런식으로 버튼 클릭 이벤트를 흉내낸다. if (e.ColumnIndex == btnColumnIdx) { string id = dataGridView1.Rows[e.RowIndex].Cells["ID"].Value.ToString(); string name = dataGridView1.Rows[e.RowIndex].Cells["Name"].Value.ToString(); MessageBox.Show(string.Format("ID : {0}, Name : {1}", id, name)); } } } class Product { public int ID { get; set; } public string Name { get; set; } }