最近工作之余在做一个百度歌曲搜索播放的小程序,需要显示歌曲列表的功能。在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 = 1, Ulink = "http://www.baidu.com/" }); list.Add(new Link { Uid = 2, Ulink = "http://www.cnblogs.com/babycool" }); list.Add(new Link { Uid = 3, Ulink = "" }); //http://www.youku.com/ list.Add(new Link { Uid = 4, 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 = 60; 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[2].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 = 0; 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[3].Value.ToString())); } } } //遍历 for (int i = 0; i < idlist.Count; i++) { MessageBox.Show(idlist[i].ToString()); } } } public class Link { public int Uid { get; set; } public string Ulink { get; set; } }
转载请注明出处。