哈喽,你好啊,我是雷工!
上篇学习了控件事件的统一关联,
本篇通过实例练习继续学习事件统一处理中Tag数据获取、对象的封装及泛型集合List的综合运用。
01 实现功能
在上篇的基础上实现,点击选中喜欢的账号,选中按钮底色变为蓝色,当选择完毕,点击保存选择时,将选中的账号,及账号的编号和原创文章数量打印到控制台;
02 效果展示
03 实现步骤
3.1、创建实体类
新建一个账号实体类Course.cs
代码为:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsleigongbiji
{
/// <summary>
/// 账号实体类
/// </summary>
internal class Course
{
public Course() { }
public Course(int courseId,string courseName,int courseNumber,string author)
{
this.CourseId = courseId;
this.CourseName = courseName;
this.CourseNumber = courseNumber;
this.Author = author;
}
public int CourseId { get; set; }
public string CourseName { get; set; }
public int CourseNumber { get; set; }
public string Author { get; set; }
}
}
3.2、创建用来封装账号对象的容器
代码如下:
private List<Course> courseList = new List<Course>();
3.3、获取Tag中的信息
在FrmleigongApp.cs中的事件集中处理方法中,获取所选按钮的Tag属性中封装的信息,通过字符串分割分别获得账号编号及原创文章数。
代码如下:
private void btn_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
//将当前按钮Tag属性中封装的信息,通过字符串分割分别获得
string[] info = btn.Tag.ToString().Split(',');
//将当前的账号信息封装到账号对象,并将账号对象封装到集合中
this.courseList.Add(new Course
{
CourseName = btn.Text,
CourseId = Convert.ToInt32(info[0]),
CourseNumber = Convert.ToInt32(info[1])
});
//当点击选中按钮时改变当前按钮的背景色
btn.BackColor = Color.Blue;
}
3.4、打印选中账号信息
练习中选择将选中的对象信息在控制台进行打印,实际项目中,可以存储到数据库,或其他位置
代码如下:
private void btnSave_Click(object sender, EventArgs e)
{
foreach(var item in this.courseList)
{
Console.WriteLine(item.CourseId + "\t" + item.CourseNumber + "\t" + item.CourseName);
}
}
3.5、保持运行
4、后记
通过以上操作即可实现练习内容,其中运行中可能会遇到如下错误:
System.FormatException:“输入字符串的格式不正确。”
通过搜索可能原因为:
如果插件程序集使用的是更高版本的 .NET Framework,例如 4.6.1 和 4.6.2,则会发生此错误。
解决方案
必须使用 .NET Framework 4.5.2 编译受影响的程序集:
A1、打开 Visual Studio。
A2、右键单击包含受影响程序集的项目,然后选择“属性”。
A3、将目标框架更改为 .NET Framework 4.5.2。