3rd Party 컨트롤 사용을 지양하는 나로서 데이터를 표시하는 DataGridView의 활용은 정말 중요하다.

사실 단순한 그리드 표현임에도 불구하고 무겁디 무거운 FarPoint, UltraGrid, C1Grid등의 사용은 마지못해 사용을 할 경우도 있지만

간혹 구역질 날 정도로 사용하기 싫은 경우가 대부분이다.


그래서 오늘은 현장에서 많이 쓰이는 작업자가 터치스크린에서 미세한 조정을 필요로 하며 Grid의 순서 위치를 변경해가며 컨트롤할 경우를

대비하여 만들어본 간단한 Row 이동처리 기능을 만들어 보았다.


먼저 결과화면 부터...






화면에 DataGridView, Button 두개가 전부인 Winform화면... 유추해 보면 알겠지만 Up버튼을 누르면 위로 Down버튼을 누르면 아래로 이동하는 기능이다.


소스는 아래와 같이...




using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;


namespace Ctrl_DataGridView

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void Form1_Load(object sender, EventArgs e)

        {

            SetGrid(dataGridView1);


            for (int i = 0; i < 30; i++)

            {

                int n = dataGridView1.Rows.Add();

                dataGridView1.Rows[n].Cells[00].Value = i.ToString();

                dataGridView1.Rows[n].Cells[01].Value = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");


                //dataGridView1.Rows.Insert(i, new string[] { i.ToString(), DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), "", "", "", "" });

            }


            lblMsg.Text = dataGridView1[0, 0].Value.ToString() + " / " + dataGridView1[1, 0].Value.ToString();

        }


        private void SetGrid(DataGridView grd)

        {


            // Grid Setting ////////////////////////////////////////////////////////////////////////////////////////////////

            grd.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

            grd.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;

            grd.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;

            grd.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

            grd.MultiSelect = false;

            grd.ReadOnly = true;

            //grd.RowHeadersVisible = false;

            grd.AllowUserToAddRows = false;



            //grd.RowTemplate.DefaultCellStyle.SelectionBackColor = Color.White;

            //grd.RowTemplate.DefaultCellStyle.SelectionForeColor = Color.Black;


            //grd.ColumnHeadersHeight = 32;

            //grd.RowTemplate.Height = 40;


            // mPLC.StartReadWord

            grd.ColumnCount = 6;


            string CML00 = "00";

            string CML01 = "01";

            string CML02 = "02";

            string CML03 = "03";

            string CML04 = "04";

            string CML05 = "05";


            grd.Columns[00].Name = CML00;

            grd.Columns[01].Name = CML01;

            grd.Columns[02].Name = CML02;

            grd.Columns[03].Name = CML03;

            grd.Columns[04].Name = CML04;

            grd.Columns[05].Name = CML05;


            for (int i = 0; i < grd.Columns.Count; i++)

            {

                grd.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;

                grd.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

                grd.Columns[i].Width = 65;

            }

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////


        }


        private void btnUp_Click(object sender, EventArgs e)

        {

            int iSelRow = 0;


            for (int i = 0; i < dataGridView1.SelectedCells.Count; i++)

            {

                iSelRow = dataGridView1.SelectedCells[i].RowIndex;


                if (iSelRow == 0) return;


                dataGridView1[0, iSelRow - 1].Selected = true;

                

                lblMsg.Text = dataGridView1[0, iSelRow - 1].Value.ToString() + " / " + dataGridView1[1, iSelRow - 1].Value.ToString();


                break;

            }


        }


        private void btnDown_Click(object sender, EventArgs e)

        {


            int iSelRow = 0;

            for (int i = 0; i < dataGridView1.SelectedCells.Count; i++)

            {

                iSelRow = dataGridView1.SelectedCells[i].RowIndex;


                if (iSelRow == dataGridView1.Rows.Count - 1) return;


                dataGridView1[0, iSelRow + 1].Selected = true;


                lblMsg.Text = dataGridView1[0, iSelRow + 1].Value.ToString() + " / " + dataGridView1[1, iSelRow + 1].Value.ToString();


                break;

            }

        }


    }

}








WRITTEN BY
테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게

,