[C# / VisualStudio] C#에서 Naver의 SmartEditor 사용 - 2. 화면 작업

2023. 7. 29. 08:58C#/공부

우선 게시글 목록 화면을 만들어보자.

 

na_list화면이다.

using System;
using System.Data;
using System.Windows.Forms;
using Oracle.ManagedDataAccess.Client;

namespace TextEditor_na_sm
{
    public partial class na_list : Form
    {
        OracleConnection conn;

        public na_list()
        {
            InitializeComponent();
        }

        private void na_list_Load(object sender, EventArgs e)
        {
        	//ReoGrid 설정
            spread1.CurrentWorksheet.SetRows(10);
            spread1.CurrentWorksheet.SetCols(2);
            spread1.CurrentWorksheet.ColumnHeaders[0].Text = "번호";
            spread1.CurrentWorksheet.ColumnHeaders[1].Text = "글 제목";

            ShowList(); //view
        }

        public void ShowList()
        {
            try
            {
                C_na c_na = new C_na();
                DataSet ds = c_na.VIEW("");

                if (ds.Tables[0].Rows.Count > 0)
                {
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        spread1.CurrentWorksheet[i, 0] = ds.Tables[0].Rows[i]["ARTICLENUM"];
                        spread1.CurrentWorksheet[i, 1] = ds.Tables[0].Rows[i]["TITLE"];
                    }
                }

                spread1.CurrentWorksheet.AutoFitColumnWidth(1, false);
                spread1.CurrentWorksheet.AutoFitRowHeight(0, false);
                spread1.CurrentWorksheet.AutoFitRowHeight(1, false);
            }
            catch (Exception e)
            {

            }
        }

        private void reoGridControl1_DoubleClick(object sender, EventArgs e) //double Click시 게시글이 뜨게
        {
            string num = spread1.CurrentWorksheet.GetCell(spread1.CurrentWorksheet.SelectionRange.Row, 0).Data.ToString();

			//게시글 form 불러오는 작업
            na_Form FrmVal = new na_Form(num);//게시글 num 넘겨주기

            foreach (Form frm in Application.OpenForms)
            {
                if (frm.Name == FrmVal.Name)
                {
                    if (frm.WindowState == FormWindowState.Minimized) frm.WindowState = FormWindowState.Normal;
                    frm.Activate();
                    return;
                }
            }

            FrmVal.Text = "게시글 보기";
            FrmVal.MdiParent = this.MdiParent;
            FrmVal.Show();
            FrmVal.Activate();
        }

        private void button1_Click(object sender, EventArgs e) //작성 버튼을 눌렀을 시
        {
            na_Form FrmVal = new na_Form();

            foreach (Form frm in Application.OpenForms) 
            {
                if (frm.Name == FrmVal.Name)
                {
                    if (frm.WindowState == FormWindowState.Minimized) frm.WindowState = FormWindowState.Normal;
                    frm.Activate();
                    return;
                }
            }

            FrmVal.Text = "게시글 작성";
            FrmVal.MdiParent = this.MdiParent;
            FrmVal.Show();
            FrmVal.Activate();
        }
    }
}

 

 

다음은 na_Form화면이다.

na_Form의 경우에는 앞서 만들었던 na_control을 사용한다.

사용자 정의 컨트롤을 만들면 도구 상자에 컨트롤 생긴다. (안생길시 다시 빌드 후 프로젝트 껏다 키기)

그 컨트롤을 갖고와서 화면에 띄워주면 된다.

 

using System;
using System.Windows.Forms;

namespace TextEditor_na_sm
{
    public partial class na_Form : Form
    {
        string num = "";
        
        public na_Form()//게시글 작성으로 들어왔을 경우
        {
            InitializeComponent();
        }

        public na_Form(string num)//게시글 보기로 들어온 경우
        {
            InitializeComponent();
            this.num = num;
        }

        private void na_WriteForm_Load(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(num))//작성
            {
                na_control1.CreateEditor();
            }
            else//보기
            {
                na_control1.CreateEditor_bind(num);
                button1.Visible = false;
            }
        }

        private void button1_Click(object sender, EventArgs e)//저장버튼을 눌렀을 시
        {
            if (string.IsNullOrEmpty(textBox1.Text)) { MessageBox.Show("제목을 입력하세요."); return; }
            na_control1.Save_btn(textBox1.Text);
        }

    }
}

 

컨트롤 부분보다 화면부분이 훨씬 쉽다.

이렇게 따라하면 naver의 smartEditor를 c#으로 쉽게 띄울 수 있다.