黑马程序员—关于如何快速给众多控件附加内容
来源:互联网 发布: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()!="")
{
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培训、期待与您交流! -------
- 黑马程序员—关于如何快速给众多控件附加内容
- 黑马程序员—关于winform中如何快速布局管理大量控件
- 黑马程序员_Asp.Net给图片附加水印
- 如何在代码中给控件添加附加属性
- 黑马程序员—关于winform中如何令textbox随输入的文本内容的长度而实时改变宽度
- 众多程序员中你如何脱颖而出
- 黑马程序员- html内容
- 黑马程序员—关于函数
- 如何给文章增加附加价值
- 想去黑马程序员_基础 java如何快速入门。
- 黑马程序员——快速排序
- 黑马程序员--关于控件平移缩放旋转的总结
- 黑马程序员——验证控件
- 黑马程序员—IOS基本控件
- 黑马程序员—IOS控件UITableView详解
- 黑马程序员__基础内容
- C#中如何快速地将一个表(datatable)的内容复制给另一个表
- 黑马程序员——关于Eclipse
- &a+1
- java Remote Object
- Java线程stop和suspend的废弃
- Android BaseAdapter使用详解
- Ubuntu安装AMD/ATI显卡驱动
- 黑马程序员—关于如何快速给众多控件附加内容
- CENTOS 6 iptables 开放端口80 3306 22等
- Myeclips如果勾选了always run in background 该如何把进度条对话框调出
- 杂谈异常处理try-catch-finally
- C# 在一个SqlConnection中打开两个SqlDataReader
- 大端字节序与小端字节序
- linux字符设备驱动总结之:全自动创建设备及节点 .
- 设计模式DP(2)单态模式
- QT4.7.2之calculatorbuilder编译