C#winform datagridview單元格的單擊處理


首先看看效果圖:

需求:要求是的在datagridview里面綁定數據后,可以任意點擊想要點擊的某列的單元格進行改變數據。需要在datagridview里面寫3個事件

1.RowPrePaint事件:主要設置要點擊的某單元對應的某列顯示的顏色

   private void dgv_Data_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            try
            {
                FontStyle newStyle = this.dgv_Data.DefaultCellStyle.Font.Style;
                newStyle |= FontStyle.Underline;
                Font font = new Font(this.dgv_Data.DefaultCellStyle.Font, newStyle);
                foreach (DataGridViewRow dr in this.dgv_Data.Rows)
                {
                    if (dr.Cells["ID"].Value.ToString() == "0")
                    {
                        dr.DefaultCellStyle.ForeColor = Color.Red;
                    }
                    dr.Cells["館藏重復"].Style.Font = font;
                    dr.Cells["館藏重復"].Style.ForeColor = Color.Blue;
                    dr.Cells["是否采購"].Style.Font = font;
                    dr.Cells["是否采購"].Style.ForeColor = Color.Blue;                    
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

2.CellMouseMove事件:主要是鼠標指針移動到單元格時候的樣式

private void dgv_Data_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.ColumnIndex == -1 || e.RowIndex == -1)
            {
                return;
            }
            DataGridViewCell cell = this.dgv_Data.Rows[e.RowIndex].Cells[e.ColumnIndex];
            if (cell == null || cell.Value.ToString() == "" || cell.Value.ToString() == "0")
            {
                return;
            }
            string headText = this.dgv_Data.Columns[e.ColumnIndex].HeaderText;
            if (headText == "館藏重復" || headText == "是否采購")
            {
                this.Cursor = Cursors.Hand;
            }
            else
            {
                this.Cursor = Cursors.Default;
            }
        }

3.CellClick事件:主要是對單元格進行單擊的數據庫操作

private void dgv_Data_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (e.ColumnIndex == -1 || e.RowIndex == -1)
                {
                    return;
                }
                DataGridViewCell cell = this.dgv_Data.Rows[e.RowIndex].Cells[e.ColumnIndex];
                if (cell == null || cell.Value.ToString() == "" || cell.Value.ToString() == "0")
                {
                    return;
                }
                Stay_PurchaseData bll = new Stay_PurchaseData();
                string headText = this.dgv_Data.Columns[e.ColumnIndex].HeaderText;                
                switch (headText)
                {
                    case "館藏重復":
                        if (cell.Value.ToString().Trim() == "")
                        {
                            bll.ChangeGCCF(dgv_Data.Rows[e.RowIndex].Cells["ID"].Value.ToString(), true);
                        }
                        else
                        {
                            bll.ChangeGCCF(dgv_Data.Rows[e.RowIndex].Cells["ID"].Value.ToString(), false);
                        }
                        break;
                    case "是否采購":
                        if (cell.Value.ToString().Trim() == "")
                        {
                            bll.ChangeSFCG(dgv_Data.Rows[e.RowIndex].Cells["ID"].Value.ToString(), true);
                        }
                        else
                        {
                            bll.ChangeSFCG(dgv_Data.Rows[e.RowIndex].Cells["ID"].Value.ToString(), false);
                        }
                        break;                                          
                }
                //刷新
                btn_Query_Click(sender, e);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM