C#/winform

[C#][winform][dev]XtraDialog 를 이용하여 간단한 입력창 만들기

ㅋㅋ! 2021. 7. 9. 12:39

**본 글은 DevExpress 컴포넌트를 이용한 경우에만 참고 할 수 있다.

 

간혹 프로그램을 개발 하다 보면 작업중인 화면 외에

간단하게 입력하는 창을 띄워, 값을 받아와야 하는 경우가 있는것 같다.

 

물론 새로운 Form을 생성하여 입력화면을 만들 수 있지만,

여러모로 번거롭다.

위 이미지 처럼 버튼을 클릭하여 데이터를 입력받는 창을 띄워 신규 추가 하는 기능을 구현 해보자.

 

우선 클래스를 하나 생성하여 아래와 같이 작성한다.



internal class XtraDialog : XtraUserControl
    {
        public ComboBoxEdit fruit = new ComboBoxEdit();
        public TextEdit price = new TextEdit();
        public TextEdit address = new TextEdit();
        public DateEdit date = new DateEdit();


		
        public XtraDialog()
        {
        	//컨트롤을 올려놓을 레이아웃 컨트롤 생성
            LayoutControl lc = new LayoutControl();
            lc.Dock = DockStyle.Fill;
            
            //콤보박스 컨트롤에 항목 추가
            AddComboBoxEdit();
			
           //레이아웃에 컨트롤 추가 
           //EX) lc.AddItem("제목" , 컨트롤); 
            lc.AddItem("과일선택", fruit);
            lc.AddItem("금액입력", price);
            lc.AddItem("주소입력", address);
            lc.AddItem("출고날짜", date);

			//XtraUserControl에 레이아웃 lc 추가 및 사이즈 설정
            this.Controls.Add(lc);
            this.Height = 150;
            this.Dock = DockStyle.Top;
        }

		//콤보박스 컨트롤에 항목 추가
        private void AddComboBoxEdit()
        {
            fruit.Properties.Items.Add("바나나");
            fruit.Properties.Items.Add("수박");
            fruit.Properties.Items.Add("딸기");
            fruit.Properties.Items.Add("두리안");
        }
    }

 

위의 코드는 해당 이미지 처럼 생성이 된다.

 

아래는 메인폼의 판매입력 버튼의 이벤트다.

private void simpleButton1_Click(object sender, EventArgs e)
        {
            XtraDialog di = new XtraDialog();  //XtraDialog 인스턴스 생성
            
            //XtraDialog 에서 OK버튼을 누르면 실행
            if (DevExpress.XtraEditors.XtraDialog.Show(di, "판매 정보 입력", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
            	//GridControl 과 바인딩 되어있는 dt에 di에서 넘어오는 데이터를 ROW 추가
                dt.Rows.Add(di.fruit.EditValue.ToString(), di.price.Text, di.address.Text, di.date.EditValue.ToString());
                dt.AcceptChanges();
            }
        }

 

 

이제 xtraDialog에서 입력 받은 값이 GridControl에 추가되는것을 확인해보자

 

확인을 누르면...
정상입력 됐다.

 

끝.