CheckBoxList取值与初始化

本文提供了一个CheckBoxList组件选中值设置与获取的经典代码实现,包括设置指定值为选中状态和获取当前选中值的功能。

CheckBoxList取值与初始化 很经典的代码

 public static string SetChecked(CheckBoxList checkList,string selval,string separator)
         {
             selval = separator + selval + separator;        //例如:"0,1,1,2,1"->",0,1,1,2,1,"
             for(int i=0; i<checkList.Items.Count; i++)
             {
                 checkList.Items[i].Selected = false;
                 string val = separator + checkList.Items[i].Value + separator;
                 if(selval.IndexOf(val)!=-1)
                 {
                     checkList.Items[i].Selected = true;
                     selval = selval.Replace(val,separator);        //然后从原来的值串中删除已经选中了的
                    if(selval == separator)        //selval的最后一项也被选中的话,此时经过Replace后,只会剩下一个分隔符
                    {        
                         selval += separator;        //添加一个分隔符
                    }
                 }
             }
             selval = selval.Substring(1,selval.Length-2);        //除去前后加的分割符号
            return selval;
         }

        /// <summary>
         /// 得到CheckBoxList中选中了的值
        /// </summary>
         /// <param name="checkList">CheckBoxList</param>
         /// <param name="separator">分割符号</param>
         /// <returns></returns>
         public static string GetChecked(CheckBoxList checkList, string separator)
         {
             string selval = "";
             for(int i=0;i<checkList.Items.Count;i++)
             {
                 if(checkList.Items[i].Selected)
                 {
                     selval += checkList.Items[i].Value + separator;
                 }
             }
             return selval;
         }
         protected void Button1_Click(object sender, EventArgs e)
         {
             string str;
             str = GetChecked(this.CheckBoxList1, ",");
             this.TextBox1.Text = str;
             SetChecked(this.CheckBoxList2, str, ",");
         }

转至http://www.cnblogs.com/shawker/archive/2009/03/17/1414795.html

以下是用C#编写的舒尔特方格的窗体程序: ```c# using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace SchulteGrid { public partial class Form1 : Form { private int n = 5; // 默认边长为5 private bool isEliminate = false; // 是否选用消除模式 private int[,] grid; // 方阵 private Button[,] buttons; // 按钮数组 private int count; // 当前点击数字的计数器 private int totalTime; // 总时间 private int bestTime = -1; // 历史最佳成绩 private List<int> times = new List<int>(); // 所有历史成绩 public Form1() { InitializeComponent(); } // 初始化 private void Init() { this.grid = new int[n, n]; this.buttons = new Button[n, n]; this.count = 1; this.totalTime = 0; // 清空面板 panel1.Controls.Clear(); // 创建按钮数组 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { Button button = new Button(); button.Text = ""; button.Font = new Font(button.Font.FontFamily, 16); button.Size = new Size(50, 50); button.Location = new Point(j * 50 + 10, i * 50 + 10); button.Click += new EventHandler(Button_Click); panel1.Controls.Add(button); this.buttons[i, j] = button; } } // 随机填充数字 Random rand = new Random(); List<int> nums = new List<int>(); for (int i = 1; i <= n * n; i++) { nums.Add(i); } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { int index = rand.Next(nums.Count); int num = nums[index]; nums.RemoveAt(index); this.grid[i, j] = num; this.buttons[i, j].Text = num.ToString(); this.buttons[i, j].ForeColor = Color.Black; this.buttons[i, j].Enabled = false; } } // 显示消除模式选择框 checkBox1.Visible = true; } // 点击开始按钮 private void button1_Click(object sender, EventArgs e) { // 初始化 Init(); // 开始计时 timer1.Start(); // 启用按钮 foreach (Button button in buttons) { button.Enabled = true; } } // 单击数字按钮 private void Button_Click(object sender, EventArgs e) { Button button = (Button)sender; int num = int.Parse(button.Text); if (num == count) { count++; button.Font = new Font(button.Font, FontStyle.Bold); if (isEliminate) button.Text = ""; if (count == n * n + 1) { // 停止计时 timer1.Stop(); // 记录本次成绩 int time = totalTime / 1000; times.Add(time); if (bestTime == -1 || time < bestTime) { bestTime = time; } // 提示用户所用时长 MessageBox.Show("恭喜你完成挑战!\n用时:" + time.ToString() + "秒"); // 禁用按钮 foreach (Button b in buttons) { b.Enabled = false; } // 隐藏消除模式选择框 checkBox1.Visible = false; } } } // 计时器 private void timer1_Tick(object sender, EventArgs e) { totalTime += 1000; label1.Text = "用时:" + (totalTime / 1000).ToString() + "秒"; } // 改变边长 private void numericUpDown1_ValueChanged(object sender, EventArgs e) { n = (int)numericUpDown1.Value; } // 消除模式选择框 private void checkBox1_CheckedChanged(object sender, EventArgs e) { isEliminate = checkBox1.Checked; } // 查询历史成绩 private void button2_Click(object sender, EventArgs e) { int n = (int)numericUpDown1.Value; if (checkBox2.Checked) { // 查询历史最佳成绩 if (bestTime == -1) { MessageBox.Show("还没有历史最佳成绩!"); } else { MessageBox.Show(n.ToString() + "阶方格历史最佳成绩:" + bestTime.ToString() + "秒"); } } else { // 查询所有历史成绩 string msg = ""; for (int i = 0; i < times.Count; i++) { msg += "第" + (i + 1).ToString() + "次:" + times[i].ToString() + "秒\n"; } if (msg == "") { MessageBox.Show("还没有历史成绩!"); } else { MessageBox.Show(n.ToString() + "阶方格历史成绩:\n" + msg); } } } } } ``` 在窗体设计器中,我创建了一个面板 `panel1`、一个计时器 `timer1`、一个标签 `label1`、一个开始按钮 `button1`、一个数字选择框 `numericUpDown1`、一个消除模式选择框 `checkBox1`、一个查询历史成绩按钮 `button2`。 当用户点击开始按钮时,程序会进行初始化操作,包括随机填充数字、禁用按钮等。初始化完成后,程序会启动计时器,并启用数字按钮。当用户依次点击数字按钮时,程序会判断是否点击正确,如果正确则将数字加粗(或消除),并将计数器加1。当所有数字均被点击正确后,程序会停止计时器,并记录本次成绩。用户可以查询历史成绩,包括历史最佳成绩和所有历史成绩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值