[开发笔记]-DataGridView控件中自定义控件的使用
最近工作之余在做一个百度歌曲搜索播放的小程序,需要显示歌曲列表的功能。在winform中采用DataGirdView来实现。
很久不写winform程序了,有些控件的用法也有些显得生疏了,特记录一下。
先看一下测试程序的效果:
完整的程序代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
List<Link> list = new List<Link>();
list.Add(new Link { Uid = , Ulink = "http://www.baidu.com/" });
list.Add(new Link { Uid = , Ulink = "http://www.cnblogs.com/babycool" });
list.Add(new Link { Uid = , Ulink = "" }); //http://www.youku.com/
list.Add(new Link { Uid = , 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 = ;
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[].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<int> idlist = new List<int>();
for (int i = ; 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[].Value.ToString()));
}
}
}
//遍历
for (int i = ; i < idlist.Count; i++)
{
MessageBox.Show(idlist[i].ToString());
}
}
} public class Link
{
public int Uid { get; set; }
public string Ulink { get; set; }
}
转载请注明出处。
[开发笔记]-DataGridView控件中自定义控件的使用的更多相关文章
- 在DataGridView控件中加入ComboBox下拉列表框的实现
在DataGridView控件中加入ComboBox下拉列表框的实现 转自:http://www.cnblogs.com/luqingfei/archive/2007/03/28/691372.htm ...
- 实现DataGridView控件中CheckBox列的使用
最近做WindowsForms程序,使用DataGridView控件时,加了一列做选择用,发现CheckBox不能选中.搜索后,要实现DataGridView的CellContentClick事件,将 ...
- android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例
有时候,可能觉得系统提供的控件太丑,就会需要自定义控件来实现自己想要的效果. 以下主要参考<第一行代码> 1.自定义一个标题栏: 系统自带的标题栏很丑,且没什么大的作用,所以我们之前会在o ...
- WinForm开发(1)——DataGridView控件(1)——C# DataGridView控件用法介绍
DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行, ...
- DataGridView控件中添加ComboBox下拉列表框的实现
//ComboBox控件拖放到DataGridView控件的某个位置 //添加年龄下拉框 private void BindAge() { //我这里添加的是静态数据,一般都是从数据库读出来的,这里就 ...
- 在DataGridView控件中显示图片
实现效果: 知识运用: DataGridView控件的DataSource属性 实现代码: private void Form1_Load(object sender, EventArgs e) { ...
- 禁止DataGridView控件中添加和删除行
实现效果: 知识运用: DataGridView控件的AllowUserToAddRows AllowUserDeleteRows和ReadOnly属性 实现代码: private void btn_ ...
- 在DataGridView控件中启用换行
实现效果: 知识运用: DataGridView控件公共属性DefaultCellStyle的WrapMode属性 public DataGridViewTriState WrapMode { ge ...
- 在DataGridView控件中验证数据输入
实现效果: 知识运用: DataGridView控件的公共事件CellValidating //将System.Windows.Forms.DataGridViewCellValidatingEven ...
随机推荐
- 下载Android 5.0源码(附源码)
下载方法见我的另一篇博客:http://blog.csdn.net/maosidiaoxian/article/details/41680769 2014-12-24更新:5.0.1源码已上传. 这次 ...
- 任务调度JOB
1.1 描述 定时执行数据库中的PL/SQL块,如存储过程.可以减化前端编程. 1.2 简单示例 本示例运行环境:oracle10g + pl/sql +xp. 使用存储过程每 ...
- J2EE 第二阶段项目之编写代码(三)
我的任务就是项目统计. 1 效益统计 1 教育效益统计表 (教育效益统计表,增,改,查看,查) 2 农牧林效益统计表 (农牧林效益统计表,增,改,查看,查) 3 乡村效益统计表 (乡村效益统计表 ...
- 提高php开发效率的9大代码片段
在网站开发中,我们都期望能高效快速的进行程序开发,如果有能直接使用的代码片段,提高开发效率,那将是极好的.php开发福利来了,今天小编就将为大家分享9大超实用的.可节省大量开发时间的php代码片段. ...
- AD组策略添加本地账号、设置允许ping回显
AD组策略添加本地账号 1. 管理工具--组策略管理--选择相应GPO(编辑)----首选项--控制面板设置--本地用户和组--右键添加账号 2.域成员计算机刷新组策略(gpupdate/force) ...
- 《云中歌》孟石头泡妞大法独家放送,单身汪get起来!!
谁说古代文人雅士只会诗词歌赋.琴棋书画?作为“玉中之王”的公子哥——孟石头泡妞可是个中高手,总结起来都能出一本“泡妞宝典”了,单身的乃们还不赶紧学起来! 第一步:假装自来熟相识,马上开启约会模式 看到 ...
- html页面,左边点击链接,右边显示内容参考代码。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- Android LayoutParams
LayoutParams继承于Android.View.ViewGroup.LayoutParams,就是布局. LayoutParams相当于一个Layout的信息包,它封装了Layout的位置.高 ...
- C#对象的深拷贝与浅拷贝
转载自:http://blog.163.com/hr_msn/blog/static/21549405120132250396584/ 深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会 ...
- hdu 1421
时隔多日,又回来啃dp... 题意:有n件物品,搬k次,每搬一个消耗的疲劳值为两件物品重量之差的平方,求最小的疲劳消耗 状态转移方程:dp[i][j] = min((dp[i-2][j-1]+(s[i ...