• C# WinForm dataGridView 技巧小结


    1.不显示第一个空白列
    RowHeaderVisible属性设置为false

    2.点击cell选取整行
    SelectinModel属性FullRowSelect
    RowSelectinModel属性设置
    或用CellClick事件也可以         //整行选取
            private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                //e.RowIndex > -1否则点击header也是叫一列
                if (dataGridView1.Rows.Count > 0 && e.RowIndex > -1)
                {
                    //MessageBox.Show(e.RowIndex.ToString());
                    dataGridView1.Rows[e.RowIndex].Selected = true;
                }
            }
    3.添加按钮图片按钮列事件
    按钮上要显示文字要设置Text属性。默认是没有值的。但还没搞清楚,为什么DataPropertyName绑定字段,不显示。所以想获得如ID这些识别记录的值只有放到其他列了。
            //按钮事件
            private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == 1)
                {
                    MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString());
                }
            }
    4.添加外部按钮取得选取列
            private void button1_Click(object sender, EventArgs e)
            {
                if (dataGridView1.SelectedRows.Count > 0)
                {
                    MessageBox.Show(dataGridView1.SelectedRows[0].Cells[1].Value.ToString());
                }
            }
    5.其他设置的。
    是否允许多行选取:MultiSelect 。
    不自动绑定数据表里的字段。
    让最后一列宽度延伸满适应上级的宽度:设置改列AutoSizeModel为Fill

    6 //dataGridView 删除某一列的操作
     private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == -1)
                {
                    return;
                }
                string action = dataGridView1.Columns[e.ColumnIndex].Name;//操作类型
                if (action == "DelOrder")
                {
                    if (MessageBox.Show("确定删除吗?", "提示", MessageBoxButtons.OKCancel,MessageBoxIcon.Warning) == DialogResult.OK)
                    {                 
                        string ID = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
                        SellBiClass.DelRules(ID);

                    }
                }
                NewLoad();
            }
       
            void NewLoad()
            {           
                dataGridView1.DataSource = SellBiClass.GetRules();
            }
    7 //dataGridView 格式化每一列
            private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
                if (e.ColumnIndex == 7) //哪一列
                {
                    if (e.Value.ToString()=="1")
                    {
                        e.Value = "特定比例";              
                    }
                    else
                    {
                        e.Value = "默认比例";
                        e.CellStyle.ForeColor = Color.Red;
                    }
                }

            }
    8  获得dataGridView 某一条记录的主键id  this.dataGridView1[第几列, this.dataGridView1.CurrentCell.RowIndex].Value.ToString()
    9 不显示出dataGridView1的最后一行空白 dataGridView1.AllowUserToAddRows = false; 设置上这条语句即可黑色头发

    10 contextMenuStrip 属性:当用记右击该控件时显示的快捷方式.

    11导出excel 

    private void pictureBox4_Click(object sender, EventArgs e)
            {
                #region 导出
                if (dataGridView1.Rows.Count > 0)
                {
                    SaveFileDialog saveFileDialog = new SaveFileDialog();
                    saveFileDialog.DefaultExt = "xls";
                    saveFileDialog.Filter = "EXCEL文件(*.XLS)|*.xls";
                    saveFileDialog.FilterIndex = 0;
                    saveFileDialog.FileName = "客户信息";
                    saveFileDialog.RestoreDirectory = true;
                    saveFileDialog.CreatePrompt = true;
                    saveFileDialog.Title = "导出到EXCEL";
                    saveFileDialog.ShowDialog();
                    if (saveFileDialog.FileName == "")
                        return;
                    Stream myStream;
                    myStream = saveFileDialog.OpenFile();
                    StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
                    string str = "";
                    try
                    {
                        for (int i = 0; i < dataGridView1.ColumnCount; i++)
                        {
                            if (i > 0)
                            {
                                str += " ";
                            }
                            str += dataGridView1.Columns[i].HeaderText;
                        }
                        sw.WriteLine(str);
                        for (int j = 0; j < dataGridView1.Rows.Count; j++)
                        {
                            string tempStr = "";
                            for (int k = 0; k < dataGridView1.Columns.Count; k++)
                            {
                                if (k > 0)
                                {
                                    tempStr += " ";
                                }
                                tempStr += dataGridView1.Rows[j].Cells[k].Value.ToString();
                            }
                            sw.WriteLine(tempStr);
                        }
                        sw.Close();
                        myStream.Close();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                    finally
                    {
                        sw.Close();
                        myStream.Close();
                    }
                }
                #endregion
            }

    12.计算总记录数 (dataGridView1.Rows.Count>0) dataGridView1.Rows.Count>-1包括标题列

    13使用button控件进行修改dataGridView中的某一行数据或删除某一行记录
     private void pictureBox2_Click(object sender, EventArgs e)
            {
                #region 赋值
                if (dataGridView1.Rows.Count > 0)
                {
                    EmpInfo empInfo = new EmpInfo();
                    int index = dataGridView1.CurrentRow.Index;

                    //记录复制到文本框
                    empInfo.EmpId = dataGridView1.Rows[index].Cells[0].Value.ToString();
                    empInfo.EmpName = dataGridView1.Rows[index].Cells[1].Value.ToString();
                    empInfo.EmpSex = dataGridView1.Rows[index].Cells[2].Value.ToString();
                    empInfo.EmpPhone = dataGridView1.Rows[index].Cells[3].Value.ToString();
                    empInfo.EmpDate = Convert.ToDateTime(dataGridView1.Rows[index].Cells[4].Value);
                    empInfo.EmpPhone = dataGridView1.Rows[index].Cells[5].Value.ToString();
                    empInfo.EmpEdu = dataGridView1.Rows[index].Cells[6].Value.ToString();
                    empInfo.EmpMarriage = dataGridView1.Rows[index].Cells[7].Value.ToString();
                    empInfo.EmpBirth = Convert.ToDateTime(dataGridView1.Rows[index].Cells[8].Value.ToString());
                    empInfo.EmpCard = dataGridView1.Rows[index].Cells[9].Value.ToString();
                    empInfo.EmpAddress = dataGridView1.Rows[index].Cells[10].Value.ToString();
                    empInfo.EmpRemark = dataGridView1.Rows[index].Cells[11].Value.ToString();
                    EmpNews empNews = new EmpNews(empInfo);
                    empNews.ShowDialog();
                    dataGridView1.DataSource = HXX.SeleEmp();
                }
                #endregion
            }

            private void pictureBox3_Click(object sender, EventArgs e)
            {
                #region 删除
                if (dataGridView1.Rows.Count > 0)
                {
                    int index = dataGridView1.CurrentRow.Index;
                    string EmpId = dataGridView1.Rows[index].Cells[0].Value.ToString();
                    if (MessageBox.Show("删除后将不能恢复!", "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
                    {
                        HXX.deleEmp(EmpId);
                        dataGridView1.DataSource = HXX.SeleEmp();
                    }
                }
                #endregion
            }

  • 相关阅读:
    描述cookies,sessionStorage和localStorage的区别
    利用Vue+ElementUi实现评论功能
    什么是盒子模型?
    个人认为比较干的博客帖子,长期维护更新
    problems_starter
    knowledge_starter
    删除某个目录下所有文件中的所有空行的最简单方法sed
    vscode快捷键备忘录
    C语言程序编译和运行,看这一篇就够了
    spring security坑1:通过code获取token报错
  • 原文地址:https://www.cnblogs.com/simadi/p/3316821.html
Copyright © 2020-2023  润新知