博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[开发笔记]-DataGridView控件中自定义控件的使用
阅读量:6087 次
发布时间:2019-06-20

本文共 4519 字,大约阅读时间需要 15 分钟。

最近工作之余在做一个百度歌曲搜索播放的小程序,需要显示歌曲列表的功能。在winform中采用DataGirdView来实现。

很久不写winform程序了,有些控件的用法也有些显得生疏了,特记录一下。

先看一下测试程序的效果:

 

完整的程序代码:

public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {            List
list = new List
(); list.Add(new Link { Uid = 1, Ulink = "http://www.baidu.com/" }); list.Add(new Link { Uid = 2, Ulink = "http://www.cnblogs.com/babycool" }); list.Add(new Link { Uid = 3, Ulink = "" }); //http://www.youku.com/ list.Add(new Link { Uid = 4, Ulink = "http://www.xiaomi.com/" }); DataGridViewCheckBoxColumn colum1 = new DataGridViewCheckBoxColumn(); DataGridViewButtonColumn colum2 = new DataGridViewButtonColumn(); DataGridViewTextBoxColumn colum3 = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn colum4 = new DataGridViewTextBoxColumn(); //自定义列 CheckBox //name值或HeaderText值为标头显示的文字 colum1.Name = "check"; //自定义列 Button colum2.Name = "butt"; colum2.Text = "按钮"; //colum2.Tag = "Ulink"; //colum2.DataPropertyName = "Ulink"; //button列不绑定数据 //设置显示单元格的按钮文本 colum2.UseColumnTextForButtonValue = true; //调整列宽 //colum2.Width = 60; //自定义列 TextBox colum3.Name = "link"; colum3.DataPropertyName = "Ulink"; //设置列不显示 colum3.Visible = false; dataGridView1.Columns.Add(colum1); dataGridView1.Columns.Add(colum2); dataGridView1.Columns.Add(colum3); dataGridView1.Columns.Add(colum4); colum4.Name = "id"; colum4.DataPropertyName = "Uid"; //设置单元格 只读 colum4.ReadOnly = true; //不自动生成列 dataGridView1.AutoGenerateColumns = false; //单击单元格选中整行 dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //自动跳转列宽 dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//自动调整列宽 填充显示 //DisplayedCell /* 通过设定AutoSizeColumnsMode或AutoSizeRowsMode属性,列或行可以根据单元格的内容变更,自动调整,但是经常使用这种方法,运行速度就会低下。尤其当行或列数量比较多时,更为明显。这时,可以替换AllCells而设定DisplayedCells,只对当前显示单元格的内容自动调整,这样就可以提高执行速度。 */ //自动调整行高 dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders; //调整列宽 在整个控件设置为自动跳转列宽之后在单独设置该列的宽度 colum2.Width = 60; dataGridView1.DataSource = list; } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { //获取点击事件发生的列名Name为butt的控件 if (dataGridView1.Columns[e.ColumnIndex].Name == "butt") { //考虑url中如果没有值的情况 为“” object url = dataGridView1.Rows[e.RowIndex].Cells[2].Value; if (url != null && url.ToString() != "") { //string url = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString(); // MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString()); //在ie浏览器中打开 // System.Diagnostics.Process.Start("iexplore.exe",url);//指定在ie浏览器中打开 //在默认浏览器中打开 System.Diagnostics.Process.Start(url.ToString()); } else { //网址中如果为空的情况 MessageBox.Show("为空"); } } } private void button1_Click(object sender, EventArgs e) { List
idlist = new List
(); for (int i = 0; i < dataGridView1.Rows.Count; i++) { if (dataGridView1["check", i].Value != null) { if ((bool)dataGridView1["check", i].Value == true) { //获取所有checkbox选中项的Uid值 idlist.Add(Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value.ToString())); } } } //遍历 for (int i = 0; i < idlist.Count; i++) { MessageBox.Show(idlist[i].ToString()); } } } public class Link { public int Uid { get; set; } public string Ulink { get; set; } }

 

 

转载请注明出处。

 

你可能感兴趣的文章
07-k8s-dns
查看>>
Android 中 ListView 分页加载数据
查看>>
oracle启动报错:ORA-00845: MEMORY_TARGET not supported on this system
查看>>
Go方法
查看>>
Dapper丶DapperExtention,以及AbpDapper之间的关系,
查看>>
搞IT的同学们,你们在哪个等级__那些年发过的帖子
查看>>
且谈语音搜索
查看>>
MySQL数据库导入导出常用命令
查看>>
低版本Samba无法挂载
查看>>
Telegraf+Influxdb+Grafana构建监控平台
查看>>
使用excel 展现数据库内容
查看>>
C#方法拓展
查看>>
MySql.Data.dll的版本
查看>>
Linux系统磁盘管理
查看>>
hdu 2191 (多重背包+二进制优化)
查看>>
home.php
查看>>
neo4j---删除关系和节点
查看>>
redis分布式锁redisson
查看>>
什么样的企业可以称之为初创企业?
查看>>
Python爬虫之BeautifulSoup
查看>>