[开发笔记]-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是如何绘制View的
当一个activity获得焦点时, 它会被要求绘制它的布局. Android框架将处理绘制的过程, 但是activity必须提供它的布局体系的根节点. 绘制将从根节点开始, 根节点被要求测量和绘制布局 ...
- JAVA EE 第一阶段项目问题
一: 乱码 原因: 由于同组的其他同学的myeclipse默认的编码方式是GBK,而我的默认的是UTF-8.所以当我使用svn把其他同学提交到组长那里去的代码下载下来的时候,就全乱码了! 解决问题: ...
- Hbase之必要时取出请求的行(列族所有数据)
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.CellScanner; import org. ...
- widnow.open
http://blog.csdn.net/chenyanggo/article/details/7443051
- ctrl + d 在phpstorm 和 eclipse 中的不同含义
Ctrl + d 在phpstrom是复制一行,非常的方便,但是eclipse中却是删除一行,非常的特别.感觉上,phpstorm更注重鼠标,但eclipse貌似更多鼠标和键盘的操作, 默认情况下[p ...
- Tiny PXE Server简介
Tiny PXE Server简介Tiny PXE Server是一款小巧而功能强大的网启软件.支持DHCP TFTP HTTP BINL DNS等多个协议,支持grub4dos,pxelinux,i ...
- Sql Server中通配符的使用
Sql Server中通配符的使用 通配符_ "_"号表示任意单个字符,该符号只能匹配一个字符."_"可以放在查询条件的任意位置,且只能代表一个字符.一个汉字只 ...
- DispatcherServlet中使用的特殊的Bean
DispatcherServlet默认使用WebApplicationContext作为上下文,因此我们来看一下该上下文中有哪些特殊的Bean: 1.Controller:处理器/页面控制器,做的是M ...
- 微软Azure云平台Hbase 的使用
In this article What is HBase? Prerequisites Provision HBase clusters using Azure Management portal ...
- Scrum 项目5.0
1.团队成员完成自己认领的任务. 2.燃尽图:理解.设计并画出本次Sprint的燃尽图的理想线.参考图6. 3.每日立会更新任务板上任务完成情况.燃尽图的实际线,分析项目进度是否在正轨. 每天的 ...