-
C# 간단하게 구현한 CheckBox ComboBox (with CheckedListBox)닷넷/WinForms 2018. 3. 15. 19:01반응형
콤보박스 아이템들에 체크박스를 추가하는 방법들은
구글링하면 나오긴 하는데 참고해서 직접 구현하려니 잘 안 된다.
그래서 콤보박스와 체크드리스트박스 두개를 활용하는 방식으로 구현하였다.
디자인(Designer.cs)
// 콤보박스, // 1) 드롭다운스타일은 심플로 한다.// 2) 클릭이벤트가 있다.// cbGroups//this.cbGroups.BackColor = System.Drawing.Color.AliceBlue;this.cbGroups.DropDownStyle = System.Windows.Forms.ComboBoxStyle.Simple;this.cbGroups.FormattingEnabled = true;this.cbGroups.Items.AddRange(new object[] {"전체"});this.cbGroups.Location = new System.Drawing.Point(275, 11);this.cbGroups.Name = "cbGroups";this.cbGroups.Size = new System.Drawing.Size(135, 23);this.cbGroups.TabIndex = 1;this.cbGroups.Text = "전체";this.cbGroups.Click += new System.EventHandler(this.cbGroups_Click);// 체크드리스트박스// 1) 프로그램 처음 실행 시 보이지 않는다.// 2) 콤보박스 밑에 위치한다.// checkedListBox1//this.checkedListBox1.CheckOnClick = true;this.checkedListBox1.FormattingEnabled = true;this.checkedListBox1.Location = new System.Drawing.Point(275, 33);this.checkedListBox1.Name = "checkedListBox1";this.checkedListBox1.Size = new System.Drawing.Size(135, 244);this.checkedListBox1.TabIndex = 10;this.checkedListBox1.Visible = false;cs 소스(.cs)// 아이템 데이터는 콤보박스가 아닌 체크드리스트박스에 바인딩한다.private void SetCombo(){DataTable dt = new DataTable();string sQuery = "SELECT GroupID, GroupName FROM Groups WHERE CompID='" + cbCompanys.SelectedValue + "'";DataAdapter da = new DataAdapter(sQuery, conn); //Sql이든 OleDb든 본인이 사용하는 DB의 데이터어댑터 사용da.Fill(dt);checkedListBox1.DataSource = dt;checkedListBox1.ValueMember = "GroupID";checkedListBox1.DisplayMember = "GroupName";}cs // 콤보박스 클릭시 체크드리스트박스를 보인다.private void cbGroups_Click(object sender, EventArgs e){if (!checkedListBox1.Visible)checkedListBox1.Visible = true;else{string s = "";foreach (object item in checkedListBox1.CheckedItems){DataRowView castItem = item as DataRowView;if (s.Length > 0){s = s + ", ";}s = s + castItem["GroupName"].ToString();}if (s == "")s = "전체";//콤보박스의 텍스트에 체크드리스트박스에서 선택한 아이템 표시cbGroups.Text = s;checkedListBox1.Visible = false;}}cs 반응형'닷넷 > WinForms' 카테고리의 다른 글
C# 텍스트박스에 숫자만 입력되게 하기 (0) 2018.06.07 C# DateTimePicker 기본값 설정하기 (0) 2018.03.27 C# 엑셀파일 가져오기 using Microsoft.Office.Interop.Excel (DataGrdiVeiw에 바인딩 포함) (8) 2018.01.10 C# DataGridView를 Database에 동기화하는 방법 (InsertCommand, UpdateCommand, DeleteCommand 사용하기) (0) 2017.10.20 C# CrossThread 오류가 발생할 때 (0) 2017.08.07