[开发笔记]-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 ...
随机推荐
- hdu 4521 小明系列问题——小明序列(线段树 or DP)
题目链接:hdu 4521 本是 dp 的变形,却能用线段树,感觉好强大. 由于 n 有 10^5,用普通的 dp,算法时间复杂度为 O(n2),肯定会超时.所以用线段树进行优化.线段树维护的是区间内 ...
- WebKit渲染基础(转载 学习中。。。)
概述 WebKit是一个渲染引擎,而不是一个浏览器,它专注于网页内容展示,其中渲染是其中核心的部分之一.本章着重于对渲染部分的基础进行一定程度的了解和认识,主要理解基于DOM树来介绍Render树和R ...
- 转:Unicode汉字编码表
转自:http://blog.csdn.net/huangxy10/article/details/10012119 Unicode汉字编码表 1 Unicode编码表 Unicode只有一个字符集 ...
- OpenGL的glOrtho平行投影函数详解[转]
glortho函数可以将当前的可视空间设置为正投影空间.基参数的意义如图,如果绘制的图空间本身就是二维的,可以使gluOrtho2D.他的使用类似于glOrtho 原型是: void glOrtho( ...
- yum的使用及配置
yum的使用及配置 文章来源:http://www.ilanni.com/?p=9032 最近由于服务器需求,需要在公司内网搭建内网yum源. 搭建内网yum源需要分以下几个步骤,如下: 1. yum ...
- javascript强制转换详解
转换成数值 Number函数强制转换成数值 数值->转换成原来的值 字符串->如果可以解析为数值,则转换成数值:否则转换成NaN或者0 true->1,falSe->0 und ...
- 深入理解JVM虚拟机-7虚拟机类加载机制
虚拟机把描述类的数据从Class文件夹加载到内存,并对数据进行小燕.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制. 下面所说的Class文件不是具体的某个文件 ...
- osx 10.11.5 El Capitan U盘制作安装
osx 10.11.5 El Capitan U盘制作安装 1. 下载osx10.11.5 从mac的 appstore下载(官方原版) 2. U盘8G起(注意备份重要资料) 3. 下载完成之后在Fi ...
- 【bzoj1057】棋盘制作
题意 给定\(n*m\)的棋盘,每个格子有0或1其中的一种颜色. 求一个最大的正方形,满足正方形内0和1相互间隔. 求一个最大的矩形,满足矩形内0和1相互间隔. \(n,m\leq 2000\) 分析 ...
- 【CITE】当类库项目中无法使用Application.StartupPath的时侯 (注:主要是在进行反射读取文件的时候!!)
http://jcserver.blog.163.com/blog/static/24044859200851582354135/ 通常我们WinForm编程时,要获取程序当 前运行的文件夹路径会用A ...