nemodu
DuYuexun
采纳率0%
2016-12-08 03:20 阅读 1.4k

关于WINFORM c# 控件数组问题

我在窗体中创建了一个控件数组CHECKBOX,并添加到了窗体的PANEL中,请问我在程序中怎么去获得窗体上添加的控件数组的CHECKED属性变化,
我在窗体上更改了CHECKBOX的CHECKED的状态,但是在程序中通过循环判断控件的状态,并不能得到CHECKBOX的Checked状态,已经勾选的控件,得到的CHECHED属性却是为FALSE,请问怎么解决。

另外,怎么通过程序,更改控件数组某一个控件的属性,例如颜色,选中状态。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • hehexiaoxia hehexiaoxia 2016-12-08 07:01

    遍历panel的children,取得当前的checkbox,然后再获取和赋值checked状态。
    要结束checkbox的编辑状态或者让这个checkbox失去焦点,checked状态生效。

    点赞 评论 复制链接分享
  • nemodu DuYuexun 2016-12-13 09:47

    获取之后我怎么刷新它在窗体上的状态。

    点赞 评论 复制链接分享
  • hehexiaoxia hehexiaoxia 2016-12-15 03:14

    public partial class Form1 : Form
    {
    CheckBox[] _checkboxes;
    bool _bLock = false;
    public Form1()
    {
    InitializeComponent();

            _checkboxes = new CheckBox[5];
    
            for (int i = 0; i < _checkboxes.Length; i++ )
            {
                _checkboxes[i] = new CheckBox();
                _checkboxes[i].CheckedChanged += chk_CheckedChanged;
                this.panel1.Controls.Add(_checkboxes[i]);
                _checkboxes[i].Location = new Point(0, i*30);
            }
        }
    
        void chk_CheckedChanged(object sender, EventArgs e)
        {
            if (_bLock) return;
    
            CheckBox chk = sender as CheckBox;
            if(chk.Checked)
            {
                // 更改状态
                // 举例
                chk.BackColor = Color.Red;
                chk.Text = "test";
                // 如果在这里修改Checked状态,需要加锁,下面代码只适用于单线程
                _bLock = true;
                chk.Checked = !chk.Checked;
                _bLock = false;
            }
        }
    }
    
    点赞 评论 复制链接分享

相关推荐