[开发笔记]-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 ...
随机推荐
- 在 Windows XP 下查看所有卷标信息
http://support.hp.com/cn-zh/document/c01270024 点击“开始”,在“开始搜索”中输入:diskpart,然后按键盘“回车”键. 在“命令行窗口”中,等待“D ...
- PO BO VO DTO POJO DAO 概念及其作用
PO BO VO DTO POJO DAO 概念及其作用(附转换图) 博客分类: java javadaovopojobo J2EE开发中大量的专业缩略语很是让人迷惑, 特别是对于刚毕业 ...
- 转:copy initialization
转自: http://en.cppreference.com/w/cpp/language/copy_initialization copy initialization C++ C++ la ...
- Multipath多路径冗余全解
一.什么是multipath 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系.而到了有光纤组成的SAN环境,由于主机和存储通过了光纤交换机连接,这样的话,就构成了多对多的关系.也就是说 ...
- HM中字典编码分析
LZ77算法基本过程 http://jpkc.zust.edu.cn/2007/dmt/course/MMT03_05_2.htm LZ77压缩算法详解 http://wenku.baidu.com/ ...
- Linux下软件安装方法即路径设置
Linux下软件安装方法即路径设置 http://www.cnblogs.com/edward259/archive/2010/07/02/1770066.html
- xUtils更新到3.0后的基本使用规则
说实话,对于xUtils,是我最近才用到的开发框架(也是刚接触),对于其功能不得不说,简化了很多的开发步骤,可以说是非常好的开发工具,但是其最近更新到3.0也没有解决加载自定义ImageView报错的 ...
- 在centos6.5中安装jdk
一.下载jdk 下载地址 www.oracle.com,我这次安装的jdk是1.6版本的,以.bin结尾的,名称为 jdk-6u45-linux-i586.bin 二.安装步骤 1.在 /usr目录下 ...
- 超实用的JavaScript代码段 Item8 -- js对象的(深)拷贝
js 对象 浅拷贝 和 深拷贝 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷贝: var Chinese = { nation:'中国' } var Doctor ...
- java.util 类 TreeSet<E>
java.lang.Object≥ java.util.AbstractCollection<E> ≥ java.util.AbstractSet<E> ≥ java.util ...