最近工作之余在做一个百度歌曲搜索播放的小程序,需要显示歌曲列表的功能。在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控件中自定义控件的使用的更多相关文章

  1. 在DataGridView控件中加入ComboBox下拉列表框的实现

    在DataGridView控件中加入ComboBox下拉列表框的实现 转自:http://www.cnblogs.com/luqingfei/archive/2007/03/28/691372.htm ...

  2. 实现DataGridView控件中CheckBox列的使用

    最近做WindowsForms程序,使用DataGridView控件时,加了一列做选择用,发现CheckBox不能选中.搜索后,要实现DataGridView的CellContentClick事件,将 ...

  3. android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例

    有时候,可能觉得系统提供的控件太丑,就会需要自定义控件来实现自己想要的效果. 以下主要参考<第一行代码> 1.自定义一个标题栏: 系统自带的标题栏很丑,且没什么大的作用,所以我们之前会在o ...

  4. WinForm开发(1)——DataGridView控件(1)——C# DataGridView控件用法介绍

    DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行, ...

  5. DataGridView控件中添加ComboBox下拉列表框的实现

    //ComboBox控件拖放到DataGridView控件的某个位置 //添加年龄下拉框 private void BindAge() { //我这里添加的是静态数据,一般都是从数据库读出来的,这里就 ...

  6. 在DataGridView控件中显示图片

    实现效果: 知识运用: DataGridView控件的DataSource属性 实现代码: private void Form1_Load(object sender, EventArgs e) { ...

  7. 禁止DataGridView控件中添加和删除行

    实现效果: 知识运用: DataGridView控件的AllowUserToAddRows AllowUserDeleteRows和ReadOnly属性 实现代码: private void btn_ ...

  8. 在DataGridView控件中启用换行

    实现效果: 知识运用: DataGridView控件公共属性DefaultCellStyle的WrapMode属性 public DataGridViewTriState WrapMode {  ge ...

  9. 在DataGridView控件中验证数据输入

    实现效果: 知识运用: DataGridView控件的公共事件CellValidating //将System.Windows.Forms.DataGridViewCellValidatingEven ...

随机推荐

  1. 在代码中修改TextView的DrawableRight图片

    TextView的xml <TextView android:id="@+id/textciew1" android:layout_width="match_par ...

  2. Struts2配置文件

    Struts2配置文件 简介: 与Struts2相关的配置文件有好几个,常用的有 struts.properties , web.xml, struts.xml等.web.xml中配置Struts2的 ...

  3. EMV技术学习和研究(转)

    刚开始学习EMV&PBOC,磕磕碰碰,感谢xuture的<EMV技术学习和研究>给了很大帮助,让我少走了很多弯路,也感谢广俊.surge.艾零.小SO.Spinach.龙行天下的帮 ...

  4. request is not finfished yet!

    在项目测试的时候发现一个问题.当数据量特别多的时候,我一次性查询几万条数据的时候,就会出现很卡很慢的状态. 我把sql优化了,但是出现同样的问题.我要从后台得到数据显示在页面上来.就需要知道是查询慢, ...

  5. C#_观察者模式

    假设有一个软件公司,每当有新产品推出,就把信息通知到一些客户. 把通知这个动作抽象成一个接口. public interface IService { void Notif(); } 客户如果想获得通 ...

  6. 测试分页查询出数据并分文件导出[java工程]

    package cn.shiyanjun.test; import java.util.ArrayList; import java.util.List; public class ExcelTest ...

  7. wampserver2.5安装 redis缓存,igbinary, phalcon框架

    wampserver2.5安装 redis缓存,igbinary, phalcon框架 根据phalconphp说明文件,先将dll文件拖入到:安装盘:\wamp\bin\php\php5.5.12\ ...

  8. 判断手机连接的是fdd还是tdd的办法

    判断手机连接的是fdd还是tdd的办法http://bbs.ydss.cn/thread-550035-1-1.html移动4G一般都是tdd,联通则可能有tdd,还有可能是fdd,判断手机连接的是t ...

  9. VB6 GDI+ 入门教程[3] 笔、刷子、矩形、椭圆绘制

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[3] 笔.刷子.矩形.椭圆绘制 2009 年 6 月 1 ...

  10. 优之星S900平板电脑root方法

    优之星S900root方法: 尝试百度一键root安卓的apk版本root失败. 电脑上下载百度一键root的Windows版本,平板设置→开发者选项→允许USB调试√,保持唤醒状态√,安全设置→允许 ...