티스토리 뷰

[조건]

- comboBox1이 전체로 선택 될 시 comboBox2도 전체만 노출

- comboBox1이 전체가 아닌 다른 값이 선택 될 시 comboBox2도 전체를 포함한 나머지 값도 노출


[최종 gif]


[코딩]

using DevExpress.XtraGrid.Views.Grid;
using System;
using System.Data;
using System.Drawing;

namespace DevTest
{
    public partial class Form2 : DevExpress.XtraEditors.XtraForm
    {
        bool _FormInit = true; //콤보박스 바인딩 될 때 comboBox1_SelectedIndexChanged 안타게 막기.

        public Form2()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 폼이 보여질 때, 일어나는 이벤트 핸들러
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void DevForm_Shown(object sender, EventArgs e)
        {
            //콤보박스 아이템 추가
            comboBoxAddItems();

            _FormInit = false; //초반 로딩이 끝났기 때문에 false로 풀어줌
        }

        //콤보박스 데이터 넣기
        public void comboBoxAddItems()
        {
            //콤보박스 데이터 넣기
            comboBox1.DisplayMember = "Name"; // 보이는 값
            comboBox1.ValueMember = "Num"; // 안보이는 값

            var items = new[]
            {
                new{ Name ="전체", Num = "00"},
                new{ Name ="사과", Num = "01"},
                new{ Name = "배", Num = "02"},
                new{Name = "아보카도", Num = "03"}
            };

            comboBox1.DataSource = items; //DataSource에 데이터를 넣어줘야 데이터가 노출 된다.
        }

        /// <summary>
        /// comboBox1 변경 이벤트
        /// </summary>
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
        	//초반 시스템 로딩 때 이벤트 타지 않게 막기
            if (_FormInit)
                return;

            if ($"{comboBox1.SelectedValue}".Trim() == "00")  //콤보박스 선택된 ValueMember값을 들고 온다.
            {
                //comboBox1이 전체 선택을 때 comboBox2는 전체로만 보이게
                comboBox2.DisplayMember = "Name"; // 보이는 값
                comboBox2.ValueMember = "Num"; // 안보이는 값
                var items2 = new[]
               {
                    new{ Name ="전체", Num = "00"}
                };
                comboBox2.DataSource = items2;
            }
            else
            {
                //comboBox2 콤보박스 데이터 넣기
                comboBox2.DisplayMember = "Name"; // 보이는 값
                comboBox2.ValueMember = "Num"; // 안보이는 값

                var items2 = new[]
                {
                new{ Name ="전체", Num = "00"},
                new{ Name ="토마토", Num = "01"},
                new{ Name = "케일", Num = "02"},
                new{Name = "키위", Num = "03"}
                };

                comboBox2.DataSource = items2;
            }
        }
    }

}

 

'홈페이지 > C# 윈폼 & DevExpress' 카테고리의 다른 글

C# 윈폼 comboBox 데이터 바인딩(DataTable)  (0) 2022.08.20
C# ?? / ?. 차이  (0) 2022.07.31
row 2줄  (0) 2021.11.09
C# 표안에 이미지 넣기  (0) 2021.11.01
댓글