1.跳转窗体时传值

 //将要显示的页面实例化
RoleMenuForm rmf = new RoleMenuForm();
try
{
//在此给RoleMenuForm 窗体中的变量roleId传值
rmf.roleId = int.Parse(dataGridView1.SelectedRows[].Cells[].Value.ToString());
rmf.Show();//显示窗体
}catch
{
MessageBox.Show("没有选择角色");
return;
}

注意:要在跳转的窗体创建一个public 的变量

         //定义的变量,前一页面已赋值,该窗体中可以直接使用
public int roleId;
private void RoleMenuForm_Load(object sender, EventArgs e)
{
//窗体加载事件的代码
}

2.自动在窗体中生成控件(我是在窗体加载事件中查询数据库,根据数据库的数据自动生成label标签并绑定了需要绑定的数据)

 private void RoleMenuForm_Load(object sender, EventArgs e)
{
RoleHandle rh = new RoleHandle();
DataTable dr = rh.Role_Id_Name(); #region 动态显示角色
int wx = ;
int hy = ;
//根据数据库的数据动态添加
for (int i = ; i < dr.Rows.Count; i++)
{
Label lb = new Label();//实例化label控件的对象
lb.Text = dr.Rows[i]["Role_Name"].ToString();
lb.Tag = dr.Rows[i]["Role_ID"];
lb.Parent = panel1;//设置生成的label控件的父容器
lb.BackColor = System.Drawing.SystemColors.HighlightText;//设置label控件的背景色为白色
lb.Size = new Size(, );//设置label控件的大小
lb.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;//设置label控件Text值对齐方式为居中左对齐
lb.Location = new Point(wx, hy);//设置label控件的位置
hy += ; //为label设置单击事件
lb.Click += new EventHandler(Lb_Click);
}
//遍历panel1中的所有控件
foreach (Control cl in panel1.Controls)
{
if (cl is Label)//如果该控件是label,再在下面判断是不是我们需要选中的,如果是就改变其背景色为蓝色
{
Label lb = cl as Label;
if (int.Parse(lb.Tag.ToString()) == roleId)
{
//改变背景色为蓝色
cl.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
}
}
}
#endregion
}

label控件自动生成了,但是如何设置自动生成的控件的单击事件呢?

3.如上面代码中标出的代码,在生成控件时添上那一句设置单击事件的代码就可以了,单击事件的代码如下:

 //label标签的单击事件
private void Lb_Click(object sender, EventArgs e)
{
Label lb = (Label)sender;
//将所有标签背景色都改为未选中时的颜色
foreach (Control cl in panel1.Controls)
{
if (cl is Label)
{
Label lb1 = cl as Label;
lb1.BackColor = System.Drawing.SystemColors.HighlightText;
}
}
//将单击的label的背景色改为选中的颜色
lb.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
RoleChanged();
}

单击事件有了,那么如果我想获得我选中的label中的值怎么办呢?

4.我是根据label的背景色来获取的,我在自动生成时都设置了label标签的背景色,当我单击选中了某个label时,我在单击事件中修改了label标签的背景色,获取的代码如下:

//自定义的得到选择标签的对象,并获取我们需要的值
private int GetSelectedRoleId()
{
int roleId = ;
//循环panel中所有的控件
foreach (Control cl in panel1.Controls)
{
if (cl is Label)//判断该控件是不是label
{
Label lb = cl as Label;
//根据label标签的背景色来判断该label标签是不是我们选择的label标签
if (lb.BackColor == System.Drawing.SystemColors.GradientActiveCaption)
{
//如果是,则取出我们想要的值
roleId = int.Parse(lb.Tag.ToString());
}
}
}
return roleId;
}

最新文章

  1. QFile QDataStream QTextStream
  2. git检出与创建的过程
  3. iOS——Core Animation 知识摘抄(三)
  4. uva10160 Servicing Stations
  5. 【循序渐进学Python】12.Python 正则表达式简介
  6. nginx下使用memcache
  7. DB2 错误编码 查询(二)(转)
  8. 2 _RESETFUL介绍
  9. #include &lt;cstdarg&gt;
  10. [Usaco2008 Dec]Patting Heads 轻拍牛头[筛法]
  11. CoreData归纳使用
  12. c++(合并排序)
  13. 洛谷 P3038 [USACO11DEC]牧草种植Grass Planting(树链剖分)
  14. CynosDB技术详解——架构设计
  15. opencv学习之路(33)、SIFT特征点提取(一)
  16. Address already in use: JVM_Bind:80 异常的解决办法
  17. 解决Ubuntu 16.04 上Android Studio2.3上面运行APP时提示DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs的问题
  18. JavaScript中的Generator函数
  19. Codeforces Round #406 (Div. 1) A. Berzerk 记忆化搜索
  20. vs2008 安装部署 启动项

热门文章

  1. Lucene 初识
  2. alpinelinux
  3. JQuery Tips
  4. 【转】JavaScript 中值得注意的 for 循环
  5. Mysql 服务无法启动解决办法
  6. Azure进阶攻略丨共享访问签名是个什么东东?
  7. 对synchronized(this)的一些理解
  8. c++链表实现学生成绩管理系统(简易版)
  9. 如何为属性是disabled的表单绑定js事件
  10. Jerry的ABAP原创技术文章合集