黑马程序员—关于如何快速给众多控件附加内容

来源:互联网 发布:mac双系统分区 编辑:程序博客网 时间:2024/04/29 03:39
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------


                     有这么个窗体,用于显示员工信息。我接下来要做的就是将其中没有排列好的label像最上面那部分一样,整齐排列好。
             然后从数据库中调相关信息,附加在这些label的后面。

排列的方法我之前的博客中有写过,这里简单介绍下。其关键点就在于控件的命名。
我的命名借鉴二维数组的方法,其中的lb代表Label,tb代表textbox,tb在这里请忽略,本文中没有textbox。

具体的方法请看:http://blog.csdn.net/toochao/article/details/8621546
下面来说怎么利用命名带来的好处,快速为控件附加信息。
首先,我是通过双击datagridview内的任意单元格来打开这个窗体的。如图,双击任意单元格。

窗体便会打开。在此之前,我定义了一个类String,其中定义一个public static string[,] s;
双击后的代码如下:
  //双击dataGridView时,打开Staff窗体,将信息赋给 静态数组public static string[,] s;
        private void dataGridView1_DoubleClick(object sender, EventArgs e)
        {
            if(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[0].Value.ToString()!="")
            {
//这里我只写了一部分,5列3行,其他可以以此类推
                String.s = new string[5,3];
                for (int a = 0; a <5;a++ )
                {
                    for (int b = 0; b<3 ;b++ )
                    {
//由于每列的控件数量不等,所以需要判断,因为我是通过计算,得出控件所对应的信息在数据库中的第几列,从而赋值的
                        if(b<1)
                        {
                            String.s[a, b] = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[a].Value.ToString().Trim();
                        }
                       else  if(b>=1)
                        {
                            String.s[a, b] = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[b * 5 + a].Value.ToString().Trim();
                        }
                    }
                }
            Form Staff = new Staff();
            Staff.ShowDialog();
            }
        }
双击后,赋值,然后窗体打开了。在窗体载入时,将静态数组s中的内容赋给相对应的控件。
 //窗体载入
        private void Staff_Load(object sender, EventArgs e)
        {
           foreach(Control c in groupBox1.Controls)
           {
           if(c is Label)
           {
               methords.lb_attach(c);
           }
           }
        }

调用的方法lb_attach()代码如下:
 //方法2:将信息附加在控件上
        public void lb_attach(object sender)
        {  
       //当控件为label时           
        if(sender is Label)
        { 
      //取控件名的最后2位
          int a=Convert.ToInt16((sender as Label).Name.Substring((sender as Label).Name.Length - 2, 1));
          int b = Convert.ToInt16((sender as Label).Name.Substring((sender as Label).Name.Length - 1, 1));
            if(String.s[a,b]!="")
            {
             (sender as Label).Text+="  "+String.s[a,b];   
            }
        }
            if(sender is TextBox)
            {                
                int a = Convert.ToInt16((sender as TextBox).Name.Substring((sender as TextBox).Name.Length - 2, 1));
                int b = Convert.ToInt16((sender as TextBox).Name.Substring((sender as TextBox).Name.Length - 1, 1));
                if(String.s[a,b]!="")
                {                
                (sender as TextBox).Text = String.s[a, b]; 
                }               
            }
            if(sender is ComboBox)
            {             
                int a = Convert.ToInt16((sender as ComboBox).Name.Substring((sender as ComboBox).Name.Length - 2, 1));
                int b = Convert.ToInt16((sender as ComboBox).Name.Substring((sender as ComboBox).Name.Length - 1, 1));
                if (String.s[a, b] != "")
                {                   
                    (sender as ComboBox).Text = String.s[a, b];
                }               
            }
            if(sender is CheckBox)
            {            
            int a = Convert.ToInt16((sender as CheckBox).Name.Substring((sender as CheckBox).Name.Length - 2, 1));
            int b = Convert.ToInt16((sender as CheckBox).Name.Substring((sender as CheckBox).Name.Length - 1, 1));           
                if (String.s[a,b]=="True")
                {
                    (sender as CheckBox).Checked = true;
                }                 
            }                 
        }      


ok!完成了,当然这个只是一部分,只附加了前3行的信息,后面的还需要根据上面的代码以此类推。就不详解了。
效果图:双击了名为测试111的单元格,弹出窗体,所有的信息都附上去了。一目了然,看着舒服多了。





 

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------