C# 勇哥的datagridview控件杂记,一网打尽全部常用知识点

勇哥注:
C#的 DataGridView控件功能强大。许多知识点会常用常忘记,在这里做个记录吧,以方便查询。
阅读此文需要你对此控件有初步的认识。
另外一点,不要以为它只是用于显示数据的表格,要打破这种认知。



未完待续。。。。



(十) DataGridViewButtonColumn 怎么设置显示内容。2022/11/16 添加:

DataGridViewButtonColumn 是按钮项。用下面的代码显示内容。


  if (win1.ConditionAndActionCount > 0)
                {
                    this.DgvFlowTreeConfig.Rows[e.RowIndex].Cells[9].Value = "...";
                }
                else
                {
                    this.DgvFlowTreeConfig.Rows[e.RowIndex].Cells[9].Value = "";
                }


(九)读取下拉框选择的内容不是更新内容的问题  2022/11/16 添加:


如下图所示:

下拉框选择回原点运动,点击后面的配置按钮,取得的还是之前的“点到点运动”

这是因为下拉框虽然选择了,但是没结束编辑。

image.png

 

解决方法是使用下面:

 var wayName = Convert.ToString(DgvFlowTreeConfig.Rows[e.RowIndex].Cells[7].EditedFormattedValue);

而不是使用下面:

var wayName = Convert.ToString(DgvFlowTreeConfig.Rows[e.RowIndex].Cells[7].Value);


EditedFormattedValue属性的意思是:

获取该单元格的当前格式化值,而不考虑该单元格是否处于编辑模式,也不论是否尚未提交此值



(八)当设置为整行选择后,发现ctrl+c复制的是整行的内容,而不是我们选中的内容


参考下面这个设置就可以了。

datagridview1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
datagridview1.ClipboardCopyMode = DataGridViewClipboardCopyMode.Disable;
datagridview1.MultiSelect = false;

 此问题网上还有一篇说明,见下面:

https://qa.1r1g.com/sf/ask/1502889321/



(七)DataGridViewComboBoxColumn怎么进行动态赋值

见勇哥的这篇文章:

http://www.skcircle.com/?id=1971


(六)单元格怎么同时判断即不是null,也不是空串


不要使用 dataGridViewX1.Rows[e.RowIndex].Cells["txt"].Value.toString();

因为object为空时用.toString()会出错,切记!!!

可以使用Convert.ToString(dataGridViewX1.Rows[e.RowIndex].Cells["txt"].Value)来转换


var cardName = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[0].Value);
if(cardName.Length>0)
{

}



(五)想要显示ComboBox列的内容需要点击两到三次才可以的问题。

此问题严重影响操作体验。


可以在CellEnter事件中加入下面的代码:


  private void DgvActionConfigData_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView dgv = sender as DataGridView;

            if (dgv != null)
            {
                if (dgv.Columns[e.ColumnIndex].Name == "combo" &&
                   dgv.Columns[e.ColumnIndex] is DataGridViewComboBoxColumn)
                {
                    SendKeys.Send("{F4}"); //选中ComboBox列时,相当于按了键盘的F4键
                }
            }
        }


(四) 去掉第一列; 第一列显示行号


第一列指的是下图所示位置:

image.png


取消第一列的代码:

dataGridView1.RowHeadersVisible = false;//隐藏第一列


你也可以把第一列显示行号。

在事件RowStateChanged中加入下面代码。

        private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
        {
            e.Row.HeaderCell.Value = string.Format("{0}", e.Row.Index + 1);
        }


如果显示行号不全的话。

可以设置下面的属性为AutoSizeToDisplayedHeaders

image.png


显示行号的效果如下:

image.png



(三) 选择整行


如下设置:

整行是:FullRowSelect

其它几种都是字面意思。


image.png


代码表示为:

this.dataGridView1.SelectionMode =DataGridViewSelectionMode.FullRowSelect;


(二)更新带DataGridViewComboBoxCell的行


因此内容是个列表,所以需要特殊的方法更新。

下面代码中的combox变量,就是这个目的。

image.png

并且DgvFlowTreeConfig.Rows.Add这一行中添加的内容也是有作用的,它是做为选中的值。(“点到点运动”)


 private void updateFlowItemDgv(List<DgvFlowItemConfig> data,string whichFlow)
        {
            DgvFlowTreeConfig.Rows.Clear();
            for (int i=0;i<data.Count;i++)
            {
                if (whichFlow != data[i].WhichFlowName) continue;
                
                var motionObjName = data[i].MotionObj.ToString();
                var sonObjName = data[i].SonObjList.getCommaString();
                var selMotionMethodName = data[i].SelMotionMethod;

                var itemNotes = data[i].ItemNote;
                DgvFlowTreeConfig.Rows.Add(new object[] {"","","", motionObjName,"", sonObjName, selMotionMethodName ,"","","", itemNotes });
                var combox = ((DataGridViewComboBoxCell)DgvFlowTreeConfig.Rows[i].Cells[6]);
                combox.Items.Clear();
                combox.Items.AddRange(data[i].MotionMethodList.ToArray());
            }
            
        }



(一)怎么设置文字显示大小


点击控件属性找到Defaultcellstyle后点击右侧三个小点

image.png

image.png

用代码写如下:

dataGridView1.DefaultCellStyle.Font = new Font("隶书",15);




--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年5月    »
12345
6789101112
13141516171819
20212223242526
2728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864