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 += "\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
        }

C# WinForm dataGridView 技巧小结的更多相关文章

  1. 关于C# Winform DataGridView 设置DefaultCellStyle无效的原因与解决方案

    上周在开发Winform 项目中,我曾遇到一个看似简单,但一直都没有解决的问题,那就是:设置winform DataGridView控件的行DefaultCellStyle,但却没有任何变化,我也曾求 ...

  2. C#实现WinForm DataGridView控件支持叠加数据绑定

    我们都知道WinForm DataGridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应的数据源即可,但需注意数据源必须支持IListSource类型,这里说的是支 ...

  3. PowerDesigner实用技巧小结(3)

    PowerDesigner实用技巧小结(3) PowerDesigner 技巧小结 sqlserver数据库databasevbscriptsqldomain 1.PowerDesigner 使用 M ...

  4. PowerDesigner实用技巧小结(2)

    PowerDesigner实用技巧小结 1.ORACLE数据库建模时,由于ORACLE的表名.字段名如果是小写会有一定的麻烦,需要将小写转化为大写? (1)在打开pdm的情况下,进入Tools-Mod ...

  5. .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧

    原文:.Net 2.0实例学习:WebBrowser页面与WinForm交互技巧 最近看到博客园入门教学文章比较流行,自己最近又偷懒比较多,没啥心得,不妨写一篇没啥深度的入门文章吧. 话说有了WebB ...

  6. WinForm DataGridView 绑定泛型List(List<T>)/ArrayList不显示的原因和解决

    背景:无意间遇到了一个不大不小的问题,希望对一些遇到的人有所帮助! 一.问题 WinForm DataGridView 绑定泛型List (List<T>)/ArrayList不显示,UI ...

  7. C# winform DataGridView 常见属性

    C# winform DataGridView 属性说明① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判断新增行 ⑤ 行的用户删除操作的自定义 ⑥ 行.列的隐藏和删 ...

  8. CentOS系统中的passwd命令实用技巧小结

    这篇文章主要介绍了Linux系统中的passwd命令实用技巧小结,是Linux入门学习中的基础知识,需要的朋友可以参考下   先来回顾一下passwd命令的基本用法: Linux passwd命令用来 ...

  9. Winform Datagridview 单元格html格式化支持富文本

    Winform Datagridview 单元格html格式化支持富文本 示例: 源码:https://github.com/OceanAirdrop/DataGridViewHTMLCell 参考: ...

随机推荐

  1. poj 1659 Frogs&#39; Neighborhood (度序列)

    Frogs' Neighborhood Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 7295   Accepted: 31 ...

  2. Photon + Unity3D 在线游戏开发 学习笔记(两)

    本文和大家 和大家说说 Photon 解压后的目录结构 这里面最基本的我们 以后开发要用到的目录 就是  deploy目录,这个目录里 放的是要挂载的 server 当然我们的 server端也要放在 ...

  3. HYSBZ 2243(树链剖分)

    题目连接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28982#problem/D 题意:给定一棵有n个节点的无根树及点权和m个操作, ...

  4. NYOJ 104 最大子矩阵(二维DP)

    最大和 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描写叙述 给定一个由整数组成二维矩阵(r*c),如今须要找出它的一个子矩阵,使得这个子矩阵内的全部元素之和最大,并把这个 ...

  5. CSS选项卡

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org ...

  6. cocos2d-x 精灵的创建和基本使用

    在cocos2d-x中.精灵能够说是一个最重要的组成元素,它代表游戏中一个最小的可见单位.同一时候也是CCNode一个最为灵活的子类,由于它能够通过装载一个平面纹理,从而具有丰富的表现力. 在进一步说 ...

  7. 促销R语言应用性能

    1.       绩效评估 时间的确定 R测量时间是在最简单的方式提供是system.time性能. system.time(expr, gcFirst=TRUE) 这个函数会在不减少程序执行性能的情 ...

  8. 【Oracle】物理体系结构

     一.ORACLE 物理体系结构 原理结构图 各部分解释: PGA: 私有内存区,仅供当前发起用户使用. 三个作用 用户登录后的session信息会保存在PGA. 运行排序.假设内存不够,orac ...

  9. Android在 Alertdialog对话框中点击消失?

    在开发的时候遇到一个问题.就是一触摸对话框边缘外部,对话框会自己主动消失.这个问题非常纠结啊,查找了一下发现从Android 4.0開始.AlertDialog有了变化.就是在触摸对话框边缘外部.对话 ...

  10. hdu3873 有约束条件的最短路

    题目大意:美国佬打算入侵火星,火星上有n个城市,有些城市可能受其他城市保护, 如果i城市受j城市保护,那么你必须先攻占j城市才能再攻占i城市,问你攻占城市n的最短时间是多少. 数据解释: 给定t, 表 ...