-------
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()!="")
{
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++ )
{
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();
}
}
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);
}
}
}
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)
{
public void lb_attach(object sender)
{
//当控件为label时
if(sender is 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;
}
}
}
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培训、期待与您交流! -------