欢迎光临散文网 会员登陆 & 注册

[C#学习笔记22]OOP类编写、UI与业务结合技巧

2020-07-14 22:07 作者:技术龙的传人  | 我要投稿

新建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];

}


[C#学习笔记22]OOP类编写、UI与业务结合技巧的评论 (共 条)

分享到微博请遵守国家法律