반응형
질문
C#의 DataGridView에서 행이 추가 될 때의 이벤트와 행을 추가시키는 이벤트 100
위의 질문이 있어서 시간이 좀 있었기에 샘플을 좀 만들어봤습니다.
우선은, 그리드뷰에서 행추가 이벤트를 삭제합니다. (일본어라 죄송합니다;)
그리고 코드에서는 아래와같이 짜봤습니다.
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 | 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 WindowsFormsApplication1 { public partial class Form1 : Form { DataGridViewComboBoxEditingControl dataGridViewComboBox = null; public Form1() { InitializeComponent(); dataGridView1.Rows.Add(); } private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { DataGridViewComboBoxCell comboBoxCell = new DataGridViewComboBoxCell(); comboBoxCell.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox; comboBoxCell.Items.Add("CASH"); comboBoxCell.Items.Add("CARD"); dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[2] = comboBoxCell; } private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control is DataGridViewComboBoxEditingControl && ((System.Windows.Forms.DataGridViewComboBoxEditingControl)e.Control).EditingControlRowIndex == dataGridView1.Rows.Count - 1) { DataGridView dgv = (DataGridView)sender; this.dataGridViewComboBox = (DataGridViewComboBoxEditingControl)e.Control; this.dataGridViewComboBox.SelectedIndexChanged += new EventHandler(dataGridViewComboBox_SelectedIndexChanged); } } private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (this.dataGridViewComboBox != null) { this.dataGridViewComboBox.SelectedIndexChanged -= new EventHandler(dataGridViewComboBox_SelectedIndexChanged); this.dataGridViewComboBox = null; } } private void dataGridViewComboBox_SelectedIndexChanged(object sender, EventArgs e) { if (!string.IsNullOrEmpty(((System.Windows.Forms.ComboBox)sender).Text)) { dataGridView1.Rows.Add(); } } } } | cs |
위의 소스에 대한 샘플은 아래의 첨부파일로 확인하실수 있습니다.
VS 2015 로 만들어졌습니다.
반응형
'C#' 카테고리의 다른 글
C# 텍스트박스 커서 숨기기 (0) | 2018.01.09 |
---|---|
[질답] How to control row addition by enterkey input (0) | 2018.01.09 |
gridview 컬럼 추가후 갱신 (0) | 2018.01.04 |
DataGridView 컨트롤의 수정모드제어 (0) | 2017.12.11 |
[질문] 트리정보를 DB에 넣어 불러오고 싶은데 어떤식으로 해야할까요 .? (0) | 2016.12.05 |