• WinForm 遍历用户控件里CheckBox


    1、常用调用方法
      1  public partial class UCRights : UserControl
      2     {
      3         private readonly int LOCATIONY;
      4         private DataTable MENU = new DataTable();
      5         private BLL.User oUser = new HRPOWER.BLL.User();
      6 
      7         public UCRights()
      8         {
      9             InitializeComponent();
     10             LOCATIONY = panRightMenu_Top.Location.Y;
     11         }
     12 
     13         private void UCRights_Load(object sender, EventArgs e)
     14         {
     15             tebDesc.Enabled = false;
     16             tebDesc.BackColor = Color.White;
     17             tebPWD.PasswordChar = '*';
     18             tebPWD2.PasswordChar = '*';
     19 
     20             MENU.Columns.Add("MENUID");
     21             MENU.Columns.Add("USERID");
     22             MENU.Columns.Add("COMPANYID");
     23             MENU.AcceptChanges();
     24 
     25             BLL.User.UploadValues2CobUID(cobID);
     26 
     27             SetTabSort();
     28 
     29             LoadCompanyComponent();
     30         }
     31         
     32         /// <summary>
     33         /// 加载公司组件
     34         /// </summary>
     35         private void LoadCompanyComponent()
     36         {
     37             HRPOWER.BLL.Company _ocompany = new HRPOWER.BLL.Company();
     38             DataTable _dt = _ocompany.GetCompanyInfo();
     39 
     40             int LOCATIONX = 218;
     41 
     42             if (_dt.Rows.Count > 0)
     43             {
     44                 for (int i = 0; i < _dt.Rows.Count; i++)
     45                 {
     46                     Parts.UCRightCompany _ucRC = new HRPOWER.WIN.UC.Parts.UCRightCompany();
     47                     _ucRC.COMPANYNAME = _dt.Rows[i]["NAME_SHORT"].ToString();
     48                     _ucRC.COMPANYID = _dt.Rows[i]["ID"].ToString();
     49                     Control c = (Control)_ucRC;
     50                     c.Location = new Point(LOCATIONX, LOCATIONY);
     51                     c.Name = "UCRightCompany" + i.ToString();
     52                     this.Controls.Add(c);
     53                     LOCATIONX += 129;
     54                 }
     55             }
     56             if (LOCATIONX > this.Width)
     57             {
     58                 this.Width = LOCATIONX + _dt.Rows.Count;
     59             }
     60         }
     61         
     62         /// <summary>
     63         /// 获取用户对应的权限
     64         /// </summary>
     65         /// <param name="cContainer">控件容器</param>
     66         private void SearchControls(System.Windows.Forms.Control cContainer)
     67         {
     68             foreach (System.Windows.Forms.Control c in cContainer.Controls)
     69             {
     70                 if (c is CheckBox)
     71                 {
     72                     CheckBox _chb = (CheckBox)c;
     73                     if (_chb.Checked)
     74                     {
     75                         string _sCompID = String.Empty;
     76                         Control[] ctlList = _chb.Parent.Parent.Controls.Find("chbCompany", true);
     77 
     78                         if (ctlList.Length > 0)
     79                         {
     80                             CheckBox chb = (CheckBox)ctlList.GetValue(0);
     81                             _sCompID = chb.Text;
     82 
     83                             if (MENU.Select("MENUID=" + _chb.Tag.ToString()).Length > 0)
     84                             {
     85                                 DataRow dr = MENU.Select("MENUID=" + _chb.Tag.ToString())[0];
     86                                 DataRow ddr = MENU.NewRow();
     87                                 ddr["USERID"] = dr["USERID"];
     88                                 ddr["MENUID"] = dr["MENUID"];
     89                                 ddr["COMPANYID"] = dr["COMPANYID"].ToString().Contains(_sCompID) ? dr["COMPANYID"].ToString() : dr["COMPANYID"].ToString() + _sCompID + ",";
     90                                 MENU.Rows.Remove(dr);
     91                                 MENU.Rows.Add(ddr);
     92                                 
     93                             }
     94                             else
     95                             {
     96                                 DataRow ddr = MENU.NewRow();
     97                                 ddr["USERID"] = cobID.Text;
     98                                 ddr["MENUID"] = _chb.Tag.ToString();
     99                                 ddr["COMPANYID"] = _sCompID + ",";
    100                                 MENU.Rows.Add(ddr);
    101                             }
    102                             MENU.AcceptChanges();
    103                         }
    104                     }
    105                 }
    106                 if (c.HasChildren) SearchControls(c);
    107             }
    108         }
    109 
    110         private void butSave_Click(object sender, EventArgs e)
    111         {
    112             String _sResult = String.Empty;
    113             if (!CheckInfoIsFull())
    114             {
    115                 return;
    116             }            
    117 
    118             SearchControls(this);
    119 
    120             _sResult = oUser.UpdateRoleInfoByUser(cobID.Text, tebName.Text, tebPWD.Text, MENU);
    121 
    122             if (_sResult.ToLower() == "true")
    123             {
    124                 BLL.BaseClass.DialogMessage("您好,用户权限设置成功!", "提示");
    125                 tebName.Text = null;
    126                 cobID.Text = null;
    127                 tebPWD.Text = tebPWD2.Text = null;
    128                 SetCheckBoxIsUnchecked(this);
    129             }
    130             else
    131             {
    132                 BLL.BaseClass.DialogMessage("抱歉,用户权限设置不成功,请确认信息无误后再设置", "提示");
    133                 BLL.BaseClass.LogErrorLog(_sResult);
    134                 tebName.Focus();
    135             }
    136 
    137             MENU.Clear();
    138         }
    139 
    140         /// <summary>
    141         /// 检测必选条件是否符合要求,true为是,false为否
    142         /// </summary>
    143         /// <returns></returns>
    144         private Boolean CheckInfoIsFull()
    145         {
    146             Boolean _bRtn = true;
    147 
    148             if (String.IsNullOrEmpty(tebName.Text.Trim()))
    149             {
    150                 BLL.BaseClass.DialogMessage(String.Format("您好,{0}不能为空", labName.Text.Replace(" ", String.Empty)), "提示");
    151                 tebName.Focus();
    152                 _bRtn = false;
    153             }
    154             if (tebName.Text.Trim().Length > 50)
    155             {
    156                 BLL.BaseClass.DialogMessage(String.Format("抱歉,{0}长度不能超过50个字符", labName.Text.Replace(" ", String.Empty)), "提示");
    157                 tebName.Focus();
    158                 _bRtn = false;
    159             }
    160             if (String.IsNullOrEmpty(cobID.Text.Trim()))
    161             {
    162                 BLL.BaseClass.DialogMessage(String.Format("您好,{0}不能为空", labID.Text.Replace(" ", String.Empty)), "提示");
    163                 cobID.Focus();
    164                 _bRtn = false;
    165             }
    166             if (cobID.Text.Trim().Length > 50 || !BLL.BaseClass.IsNumberOrChar(cobID.Text.Trim()))
    167             {
    168                 BLL.BaseClass.DialogMessage(String.Format("抱歉,{0}长度不能超过50个字符同时只能为数字或字母", labID.Text.Replace(" ", String.Empty)), "提示");
    169                 cobID.Focus();
    170                 _bRtn = false;
    171             }
    172             if (String.IsNullOrEmpty(tebPWD.Text))
    173             {
    174                 BLL.BaseClass.DialogMessage(String.Format("您好,{0}不能为空", labPWD.Text.Replace(" ", String.Empty)), "提示");
    175                 tebPWD.Focus();
    176                 _bRtn = false;
    177             }
    178             if (String.IsNullOrEmpty(tebPWD2.Text))
    179             {
    180                 BLL.BaseClass.DialogMessage(String.Format("您好,{0}不能为空", labPWD2.Text.Replace(" ", String.Empty)), "提示");
    181                 tebPWD2.Focus();
    182                 _bRtn = false;
    183             }
    184             if (tebPWD.Text.Length>50 || tebPWD2.Text.Length>50)
    185             {
    186                 BLL.BaseClass.DialogMessage("抱歉,密码长度不能超过50", "提示");
    187                 tebPWD.Focus();
    188                 _bRtn = false;
    189             }
    190             if (String.Compare(tebPWD.Text, tebPWD2.Text, false) != 0 || !BLL.BaseClass.IsNumberOrChar(tebPWD.Text.Trim()))
    191             {
    192                 BLL.BaseClass.DialogMessage(String.Format("抱歉,{0}与{1}不相同或者密码不为数字、字母组成",
    193                                                            labPWD.Text.Replace(" ", String.Empty),
    194                                                            labPWD2.Text.Replace(" ", String.Empty)), "提示");
    195                 tebPWD.Focus();
    196                 _bRtn = false;
    197             }
    198 
    199             return _bRtn;
    200         }
    201 
    202         /// <summary>
    203         /// 设置WINDOWS TAB键顺序
    204         /// </summary>
    205         private void SetTabSort()
    206         {
    207             cobID.TabIndex = 0;
    208             tebName.TabIndex = 1;            
    209             tebPWD.TabIndex = 2;
    210             tebPWD2.TabIndex = 3;
    211             butSave.TabIndex = 4;
    212             cobID.Focus();
    213         }
    214 
    215         private void cobID_SelectedIndexChanged(object sender, EventArgs e)
    216         {
    217             SetCheckBoxIsUnchecked(this);
    218             DataTable _dtMenu = oUser.GetUserMenuInfoByUID(cobID.Text);
    219             if (_dtMenu.Rows.Count > 0)
    220             {
    221                 tebName.Text = _dtMenu.Rows[0]["Comment"].ToString();
    222                 tebPWD2.Text = tebPWD.Text = BLL.BaseClass.Decrypt(_dtMenu.Rows[0]["Password"].ToString());
    223                 foreach (DataRow dr in _dtMenu.Rows)
    224                 {
    225                     SetValueToCheckBox(this, dr);
    226                 }
    227             }
    228             else
    229             {
    230                 tebName.Text = tebPWD.Text = tebPWD2.Text = null;
    231             }
    232         }
    233 
    234         /// <summary>
    235         /// 根据查询结果,给用户设置对应的值
    236         /// </summary>
    237         /// <param name="cContainer">控件容器</param>
    238         /// <param name="dr">DataRow</param>
    239         private void SetValueToCheckBox(Control cContainer, DataRow dr)
    240         {
    241             foreach (Control c in cContainer.Controls)
    242             {
    243                 if (c is CheckBox)
    244                 {
    245                     CheckBox chb = (CheckBox)c;
    246                     string tmp = dr["MENU_ID"].ToString();
    247                     string tmp1 = chb.Tag.ToString();
    248                     if (tmp1 == tmp && !chb.Checked)
    249                     {
    250                         //查找公司CheckBox控件
    251                         Control[] cList = chb.Parent.Parent.Controls.Find("chbCompany", true);
    252                         if (cList.Length > 0)
    253                         {
    254                             if (dr["COMPANY_ID"].ToString().Contains(((CheckBox)cList.GetValue(0)).Text))
    255                             {
    256                                 chb.Checked = true;
    257                             }
    258                         }
    259                     }
    260                 }
    261 
    262                 if (c.HasChildren)
    263                 {
    264                     SetValueToCheckBox(c, dr);
    265                 }
    266             }          
    267         }
    268 
    269         /// <summary>
    270         /// 设置CheckBox控件为未选状态
    271         /// </summary>
    272         /// <param name="cContainer">控件容器</param>
    273         private void SetCheckBoxIsUnchecked(Control cContainer)
    274         {
    275             foreach (Control c in cContainer.Controls)
    276             {
    277                 if (c is CheckBox)
    278                 {
    279                     ((CheckBox)c).Checked = false;
    280                 }
    281 
    282                 //处理隐藏的Panel不被处理
    283                 if (c.HasChildren && c.Name!="panCompany0Hide")
    284                     SetCheckBoxIsUnchecked(c);
    285             }
    286         }
    287 
    288         private void cobID_KeyPress(object sender, KeyPressEventArgs e)
    289         {
    290             if (e.KeyChar == (char)13)
    291             {
    292                 cobID_SelectedIndexChanged(null, null);
    293             }
    294         }
    295 
    296     }
    View Code

    2、获取指定窗体内,所以check值集合  

     1         /// <summary>
     2         /// 加载公司组件
     3         /// </summary>
     4         private void LoadCompanyComponent()
     5         {
     6             HRPOWER.BLL.Company _ocompany = new HRPOWER.BLL.Company();
     7             DataTable _dt = _ocompany.GetCompanyInfo();
     8 
     9             int LOCATIONX = 218;
    10 
    11             if (_dt.Rows.Count > 0)
    12             {
    13                 for (int i = 0; i < _dt.Rows.Count; i++)
    14                 {
    15                     Parts.UCRightCompany _ucRC = new HRPOWER.WIN.UC.Parts.UCRightCompany();
    16                     _ucRC.COMPANYNAME = _dt.Rows[i]["NAME_SHORT"].ToString();
    17                     _ucRC.COMPANYID = _dt.Rows[i]["ID"].ToString();
    18                     Control c = (Control)_ucRC;
    19                     c.Location = new Point(LOCATIONX, LOCATIONY);
    20                     c.Name = "UCRightCompany" + i.ToString();
    21                     this.Controls.Add(c);
    22                     LOCATIONX += 129;
    23                 }
    24             }
    25             if (LOCATIONX > this.Width)
    26             {
    27                 this.Width = LOCATIONX + _dt.Rows.Count;
    28             }
    29         }
    30         
    31         /// <summary>
    32         /// 获取用户对应的权限
    33         /// </summary>
    34         /// <param name="cContainer">控件容器</param>
    35         private void SearchControls(System.Windows.Forms.Control cContainer)
    36         {
    37             foreach (System.Windows.Forms.Control c in cContainer.Controls)
    38             {
    39                 if (c is CheckBox)
    40                 {
    41                     CheckBox _chb = (CheckBox)c;
    42                     if (_chb.Checked)
    43                     {
    44                         string _sCompID = String.Empty;
    45                         Control[] ctlList = _chb.Parent.Parent.Controls.Find("chbCompany", true);
    46 
    47                         if (ctlList.Length > 0)
    48                         {
    49                             CheckBox chb = (CheckBox)ctlList.GetValue(0);
    50                             _sCompID = chb.Text;
    51 
    52                             if (MENU.Select("MENUID=" + _chb.Tag.ToString()).Length > 0)
    53                             {
    54                                 DataRow dr = MENU.Select("MENUID=" + _chb.Tag.ToString())[0];
    55                                 DataRow ddr = MENU.NewRow();
    56                                 ddr["USERID"] = dr["USERID"];
    57                                 ddr["MENUID"] = dr["MENUID"];
    58                                 ddr["COMPANYID"] = dr["COMPANYID"].ToString().Contains(_sCompID) ? dr["COMPANYID"].ToString() : dr["COMPANYID"].ToString() + _sCompID + ",";
    59                                 MENU.Rows.Remove(dr);
    60                                 MENU.Rows.Add(ddr);
    61                                 
    62                             }
    63                             else
    64                             {
    65                                 DataRow ddr = MENU.NewRow();
    66                                 ddr["USERID"] = cobID.Text;
    67                                 ddr["MENUID"] = _chb.Tag.ToString();
    68                                 ddr["COMPANYID"] = _sCompID + ",";
    69                                 MENU.Rows.Add(ddr);
    70                             }
    71                             MENU.AcceptChanges();
    72                         }
    73                     }
    74                 }
    75                 if (c.HasChildren) SearchControls(c);
    76             }
    77         }
    View Code
  • 相关阅读:
    DataAdapter的Fill方法(转)
    C#读取xml节点数据方法小结
    Service-Oriented Architecture,SOA(转)
    SOAP详解(转)
    WebService到底是什么?(转)
    只需要2个工具,百度云盘大文件就能用迅雷和IDM下载
    刘铁猛-深入浅出WPF-系列资源汇总
    WCF书籍
    书籍:wpf学习书籍介绍
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器(转)
  • 原文地址:https://www.cnblogs.com/markli/p/5525533.html
Copyright © 2020-2023  润新知