private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.SelectedCells.Count != 1)
            {
                return;
            }
            if (e.ColumnIndex == 0)
            {
                bool val = true;
                BaseSensorConfigItem config = null;
                try
                {
                    var key = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
                    config = (BaseSensorConfigItem)(dataGridView1.Rows[dataGridView1.SelectedCells[0].RowIndex].DataBoundItem);
                    val    = (bool)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
                }
                catch (Exception)
                {
                }

                try
                {
                    if (val)
                    {
                        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 0;
                        config.Active = false;
                    }
                    else
                    {
                        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = 1;
                        config.Active = true;
                    }
                    dbManager.dc.SubmitChanges();
                }
                catch (Exception)
                {
                }
            }
        }
        private void deleteBtn_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedCells.Count != 1)
            {
                MessageBox.Show("1개의 행을 선택하세요.");
                return;
            }
            int delIndex = dataGridView1.SelectedCells[0].RowIndex;
            BaseSensorConfigItem delConfig = null;

            try
            {
                delConfig = (BaseSensorConfigItem)(dataGridView1.Rows[delIndex].DataBoundItem);
            }
            catch (Exception)
            {
            }

            DialogResult result = MessageBox.Show(delConfig.Name + "을 정말로 삭제하시겠습니까?", "", MessageBoxButtons.YesNo);

            try
            {
                if (result == DialogResult.Yes)
                {
                    var delDTO = dbManager.dc.BaseSensorConfigs
                                 .Where(t => t.Id == delConfig.GetId())
                                 .Select(t => t);
                    foreach (var dto in delDTO)
                    {
                        dbManager.dc.BaseSensorConfigs.DeleteOnSubmit(dto);
                    }
                }
            }
            catch (Exception)
            {
            }
            dbManager.dc.SubmitChanges();
        }
        private void dataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedCells.Count < 1)
            {
                return;
            }

            if (dataGridView1.SelectedCells.Count == 1)
            {
                BaseSensorConfigItem config = (BaseSensorConfigItem)(dataGridView1.Rows[dataGridView1.SelectedCells[0].RowIndex].DataBoundItem);
                propertyGrid1.SelectedObject = config;
            }
            else
            {
                var configs = new List <BaseSensorConfigItem>();
                for (int i = 0; i < dataGridView1.SelectedCells.Count; i++)
                {
                    BaseSensorConfigItem config = (BaseSensorConfigItem)(dataGridView1.Rows[dataGridView1.SelectedCells[i].RowIndex].DataBoundItem);
                    configs.Add(config);
                }
                propertyGrid1.SelectedObjects = configs.ToArray();
            }
        }