zoukankan      html  css  js  c++  java
  • 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
            }

  • 相关阅读:
    HDU3336 Count the string —— KMP next数组
    CodeForces
    51Nod 1627 瞬间移动 —— 组合数学
    51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈
    51Nod 1225 余数之和 —— 分区枚举
    51Nod 1084 矩阵取数问题 V2 —— 最小费用最大流 or 多线程DP
    51Nod 机器人走方格 V3 —— 卡特兰数、Lucas定理
    51Nod XOR key —— 区间最大异或值 可持久化字典树
    HDU4825 Xor Sum —— Trie树
    51Nod 1515 明辨是非 —— 并查集 + 启发式合并
  • 原文地址:https://www.cnblogs.com/simadi/p/3316821.html
Copyright © 2011-2022 走看看