• 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);
                }
            }
  • 相关阅读:
    Discuz中解决jquery 冲突的方法 绝对简单
    关于MySql has gone away问题的解决
    关于水晶报表的一些错误
    biweb后台添加上传下载功能
    ajax 异步插入图片到数据库(多图上传)
    ajax 异步插入图片到数据库(单图上传)
    使用ajax异步提交表单数据(史上最完整的版本)
    系统管理-软件管理
    系统管理-计划任务-系统日志
    Django-ondelete
  • 原文地址:https://www.cnblogs.com/luoxiaozhao/p/5800023.html
Copyright © 2020-2023  润新知