如图:c# winform label放在button上,button在groupbox里,如何隐藏N多个label?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如图:c# winform label放在button上,button在groupbox里,如何隐藏N多个label?相关的知识,希望对你有一定的参考价值。

foreach (Label col in Controls)

if (col is Label)

((Label)col).Hide();


这个语句只能隐藏不在任何groupbox里的。对于上面的条件 如何修改?

1、在上面新建一个panel 在后台直接控制何时显示与隐藏即可。
2、以上语句要找出label的父容器,判断出父容器就可以控制隐藏显示
参考技术A foreach (Label col in groupbox1.Controls)

if (col is Label)

((Label)col).Hide();


获得的是groupbox里的label。。

不过你有多个groupbox建议用个panel当父容器。
直接
foreach (Label col in panel1.Controls)

if (col is Label)

((Label)col).Hide();

参考技术B 隐藏它干嘛,直接给上面遮一层上去嘛。。。哈哈
panel啊 picturebox啊 都可以嘛!追问

我就是想隐藏 但不想一个一个写

追答

效果一样嘛~~ 一个个隐藏多慢的,
直接新建个层 多块的

参考技术C 先要findcontrol下groupbox

然后再遍历里面的label

c# winform 循环控件循环赋值问题?

如图片所显示那样 我循环2行6列PictureBox控件,现在如何实现 添加一个数据name就显示在1图中,添加第2条数据pass那么显示在1图中,name就显示到2图中,依次类推。最新数据要显示在1图中。。那位高手指点一下
四楼的回答是添加一个数据就添加一个容器,我需要的是在系统运行时就初始化2行6列的类似容器,每添加一条数据就放入容器中,最新的数据必需放在第一个容器中,其次在后面。高手们快出来解决问题了

新建一个用户控件MyPictureBox;里面放一个PictureBox,一个 Label 控件
后台代码:
public partial class MyPictureBox : UserControl

public MyPictureBox()

InitializeComponent();

private string userName;
public string UserName

get return userName;
set
userName = value;
lbUserName.Text = userName;


private Color pictureBackColor;
public Color PictureBackColor

get return pictureBackColor;
set

pictureBackColor = value;
pct.BackColor = pictureBackColor;



在Form1中放一个Panel,一个Button,一个TextBox
代码如下:
public partial class Form1 : Form

public Form1()

InitializeComponent();
ShowPictureBox();

IList<string> stringList;
int controlsQuantity = 12;
int columnQuantity = 6;
private void ShowPictureBox()

int nowRow = 0;
int nowCol = 0;
for (int i = 0, j = 0; i < controlsQuantity; i++)

if (j > 0 && i % columnQuantity == 0)

nowRow++;
nowCol = 0;

j++;
nowCol++;
MyPictureBox pct = new MyPictureBox();//用户控件
pct.PictureBackColor = Color.Red;
pct.Location = new Point((pct.Size.Width + 5) * nowCol, (pct.Size.Height + 5) * nowRow);
panel1.Controls.Add(pct);

stringList = new List<string>(panel1.Controls.Count);//初始化字符串数组


private void button1_Click(object sender, EventArgs e)

stringList.Add(textBox1.Text);
if (stringList.Count > panel1.Controls.Count)

return;

for (int i = stringList.Count-1; i >= 0; i--)

//在MyPictureBox中显示textBox1中的数据
((MyPictureBox)panel1.Controls[stringList.Count-1 -i]).UserName = stringList[i];



要显示的数据输入到TextBox1中,点击按钮Button1增加到MyPictureBox中,
参考技术A 好办啊,用FlowLayoutPanel 控件,看看他自动生成的代码,是怎么把你的控件按顺序排放的,就知道了。 参考技术B 关键就是你要准确找到这个控件 foreach遍历当前面板中的Controls,通过ID来判断进行相应的操作啊!思路就是这个,思路决定出路! 参考技术C foreach (Control pic in this.pic_nav) //this.pic_nav为存放PictureBox上的层容器

if (pic.GetType().ToString() == "System.Windows.Forms.PictureBox")

PictureBox picd = (PictureBox)pic;
////写条件语句


参考技术D 很简单:
定义变量:
int x=5;//x为总共的数据数
List<string> ls=new List<string>();//存放数据的容器(也可以使用12维的数组,但是效果不好)也可是其他类型。
添加数据://假设添加字符串 string str="你的字符串":
ls.Add(str);
在添加之后进行数据刷新。
for(int i=ls.count;i>0;i--)
//吧最新的数据放到最前面
int j=0;
foreach (Control c in this.Panel1) //this.pic_nav为存放PictureBox上的层容器

if (pic.GetType()==typeof(PictureBox))

PictureBox pic = (PictureBox)pic;
if(ls.count>j)
pic.name=ls[i];//当然可以使其他操作

j++;

以上是关于如图:c# winform label放在button上,button在groupbox里,如何隐藏N多个label?的主要内容,如果未能解决你的问题,请参考以下文章

c#(winform)怎么修改多个控件的一个共有属性?

c# winform label的位置怎么设置?

c# winform 循环控件循环赋值问题?

C#循环控制winform中的标签label

c#怎样在winform窗体中自动生成label1控件,比如有姓名,性别,年龄三个字段就自动生成三个label来显示

C# Winform button控件的边框设置问题