zoukankan      html  css  js  c++  java
  • C# WinForm dataGridView 技巧小结

    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 
    不自动绑定数据表里的字段。
    让 最后一列宽度延伸满适应上级的宽度:设置改列AutoSizeModelFill

    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()
    不显示出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 += "\t";
    }
    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 += "\t";
    }
    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
    }

    引用自:http://limingloved.blog.163.com/blog/static/132297658201022454929764/ 

     

  • 相关阅读:
    Linux磁盘空间被未知资源耗尽
    磁盘的分区、格式化、挂载(转)
    sp_MSforeachtable和sp_MSforeachdb
    分布式缓存系统 Memcached 【转载】
    在性能计数的时候使用StopWatch类型
    数据库设计阶段中为何要考虑“反规范化”
    再谈谈数据库镜像之客户端重定向
    当SQL Server排序时遇上了NULL值
    ArrayList的动态扩展
    SSMS 2008的智能感知仅仅针对SQL Server 2008的数据库有效
  • 原文地址:https://www.cnblogs.com/baishiying/p/2644233.html
Copyright © 2011-2022 走看看