[C#学习笔记22]OOP类编写、UI与业务结合技巧
新建Model文件夹,添加小区类、选号器类
小区类:封装数据
public class House
{
public List<string> Numbers{get;set;}
}
public class Selector
{
//A区房号
public List<string> ANumberList{get;set;}
//B区房号
public List<string> BNumberList{get;set;}
//存储选择的号码
public List<House> SelectedNums{get;set} = new List<House>
private Random random = new Random();//随机数生成器,仅在本类内部使用
//构造方法:初始化小区房号
public Selector()
{
ANumberList = new List<string>
{
"01","02","03","04","05","06","07","08",“09”,"10","11"
};
BNumberList = new List<string>
{
"01","02","03","04","05","06",“07”
};
}
//生成4个随机号码
public List<string> CreateRandomNum()
{
List<string> numList = new List<string>{};
//生成3个A区号
while(true)
{
if(numList.Count == 3) break;//随机选取了三个数字了
string num = ANumberList[random.Next(11)];
if(numList.Contains(num))
continue;//如果是重复的数字,则重新随机抽取
else
numList.Add(num);
}
//生成一个B区号
numList.Add(BNumberList[random.Next(7)]);
return numList;
}
}
在UI中创建选号器对象
private Selector newSelector = new Selector();
//启动选号按钮事件处理
private void btnStart_Click(object sender, EventArgs e)
{
this.timerCreateNum.Start();//启动定时器
this.btnSelect.Enabled = true;
this.btnStart.Enabled = false;
}
//开始选号按钮事件处理
private void btnSelect_Click(object sender, EventArgs e)
{
this.timerCreateNum.Stop();
this.btnSelect.Enabled = false;
this.btnStart.Enabled = true;
//创建双色球对象
House hs = new House
{
Numbers = this.randomNum
};
//添加到选号池,备用保存等方法使用
this.newSelector.SelectedNums.Add(hs);
//显示号码
string num = string.Empty;
foreach(string item in this.randomNum)
{
num += item+ " ";
}
this.lbNumberList.Items.Add(num);
}
//清除
private void btnDel_Click(object sender, EventArgs e)
{
this.newSelector.SelectedNums.Clear();//从集合中清除
this.lbNumberList.Items.Clear();//从列表中清除
}
组件Timer在界面不可见,属性Interval(50)
//定时器事件50ms调用一次
private void timerCreateNum_Tick(object sender,EventArgs e)
{
//通过通用选号器得到随机数
List<string> randomNum = newSelector.CreateRandomNum();
//在列表中显示
this.lblNum1.Text = randomNum[0];
this.lblNum2.Text = randomNum[1];
this.lblNum3.Text = randomNum[2];
this.lblNum4.Text = randomNum[3];
}