C# 限制winform中控件的数量
我的表单中有一个按钮,每次单击按钮都会添加groupBox。但是我想要一个winform只包含8个GroupBox。当groupBox的数量达到8时,它将自动执行Visible=false groupBox之前的所有8,并再次添加名为(groupBox9)的groupBox。我该怎么办C# 限制winform中控件的数量,c#,winforms,groupbox,C#,Winforms,Groupbox,我的表单中有一个按钮,每次单击按钮都会添加groupBox。但是我想要一个winform只包含8个GroupBox。当groupBox的数量达到8时,它将自动执行Visible=false groupBox之前的所有8,并再次添加名为(groupBox9)的groupBox。我该怎么办 private void butonYeni_Click(object sender, EventArgs e) { //creating Font Font font = new
private void butonYeni_Click(object sender, EventArgs e)
{
//creating Font
Font font = new Font("Microsoft Sans Serif", 10.0f, FontStyle.Bold);
Font font2 = new Font("Microsoft Sans Serif", 9.0f, FontStyle.Bold);
int sayGB = 0;
foreach (Control c in this.Controls)
{
if (c.GetType() == typeof(GroupBox))
{
sayGB++;
}
for (int i = sayGB; i < 1000; i++)
{
//creating groupbox
GroupBox Group = new GroupBox();
Group.Width = 767;
Group.Height = 179;
Group.Text = "Soru & Cevap";
Group.Font = font;
Group.ForeColor = Color.Maroon;
Group.Location = new Point(200,66);
//creating label
Label Soru = new Label();
Soru.Text = "Soru: ";
Soru.Font = font2;
Soru.ForeColor = Color.Maroon;
Soru.Location = new Point(6,33);
Soru.Width = 53;
Soru.Height = 13;
//creating textbox
TextBox soruText = new TextBox();
soruText.Width = 685;
soruText.Height = 20;
soruText.Font = font2;
soruText.ForeColor = Color.Black;
soruText.Multiline = true;
soruText.Location = new Point(70,31);
//creating label
Label Cevap = new Label();
Cevap.Text = "Cevap:";
Cevap.Font = font2;
Cevap.ForeColor = Color.Maroon;
Cevap.Location = new Point(6, 92);
Cevap.Width = 53;
Cevap.Height = 25;
//creating textbox
TextBox cevapText = new TextBox();
cevapText.Width = 685;
cevapText.Height = 69;
cevapText.Font = font2;
cevapText.ForeColor = Color.Black;
cevapText.Multiline = true;
cevapText.Location = new Point(70,67);
//creating button
Button btn = new Button();
btn.Width = 75;
btn.Height = 25;
btn.Text = "Kaydet";
btn.BackColor = Color.Maroon;
btn.Font = font2;
btn.ForeColor = Color.White;
btn.Location = new Point(682,148);
//kontrolleri ekleme
Group.Controls.Add(btn);
Group.Controls.Add(Soru);
Group.Controls.Add(soruText);
Group.Controls.Add(Cevap);
Group.Controls.Add(cevapText);
this.Controls.Add(Group);
}
}
}
private void butonYeni_单击(对象发送者,事件参数e)
{
//创建字体
Font Font=新字体(“Microsoft无衬线字体”,10.0f,FontStyle.Bold);
Font font2=新字体(“Microsoft无衬线字体”,9.0f,FontStyle.Bold);
int-sayGB=0;
foreach(此.Controls中的控件c)
{
if(c.GetType()==typeof(GroupBox))
{
sayGB++;
}
for(int i=sayGB;i<1000;i++)
{
//创建groupbox
GroupBox组=新的GroupBox();
组宽=767;
组:身高=179;
Group.Text=“Soru&Cevap”;
Group.Font=Font;
Group.ForeColor=颜色为褐红色;
组位置=新点(200,66);
//创建标签
标签Soru=新标签();
Soru.Text=“Soru:”;
Soru.Font=font2;
Soru.ForeColor=颜色褐红色;
Soru.位置=新点(6,33);
Soru.宽度=53;
索鲁高度=13;
//创建文本框
TextBox soruText=新建TextBox();
soruText.Width=685;
soruText.高度=20;
soruText.Font=font2;
soruText.ForeColor=Color.Black;
soruText.Multiline=true;
soruText.Location=新点(70,31);
//创建标签
标签Cevap=新标签();
Cevap.Text=“Cevap:”;
Cevap.Font=font2;
Cevap.ForeColor=颜色为褐红色;
Cevap.位置=新点(6,92);
Cevap.宽度=53;
Cevap.高度=25;
//创建文本框
TextBox cevapText=新的TextBox();
cevapText.Width=685;
cevapText.高度=69;
cevapText.Font=font2;
cevapText.ForeColor=颜色.黑色;
cevapText.Multiline=true;
cevapText.位置=新点(70,67);
//创建按钮
按钮btn=新按钮();
btn.宽度=75;
btn.高度=25;
btn.Text=“Kaydet”;
btn.BackColor=颜色为褐红色;
btn.Font=font2;
btn.ForeColor=颜色。白色;
btn.位置=新点(682148);
//康特罗里埃克勒姆酒店
组.控件.添加(btn);
组.控件.添加(Soru);
Group.Controls.Add(soruText);
组.对照组.添加(Cevap);
Group.Controls.Add(cevapText);
this.Controls.Add(组);
}
}
}
定义一个整数类变量,并在每次单击按钮时增加该变量。增加后,检查是否大于8。如果是,请将您的内容设置为Visible=false
模型:
public class MyClass
{
private int groupboxCounter = 0;
public MyClass()
{
}
private void btn_click(...)
{
// add a new groupbox here
groupboxCounter++;
if (groupboxCounter > 8)
{
//make stuff invisible here
}
}
}
你的意思是,一旦你添加第9组框,你就想隐藏前8组框?显示您的代码(
btn\u特别是单击
)显示您的代码并说明问题所在。由于声誉问题,我无法添加代码,但我会告诉您如何计算分组框。通过“For Each”,我可以计算groupBox的类型(这个控件中的控件c,如果c.gettype()==typeof(groupBox),那么使用int Counter=0 Counter++),它会给出groupBox的数量。我可以将GroupBox命名为group.name=“group”+Counter;但问题是,我可以在winform中添加8个groupBox,但当第9次单击时,它就是在iTunes上添加groupBox。在你问题的标签下面有一个“编辑”按钮,你不需要任何声誉就可以使用它。是的,这不起作用。在枚举集合时(通常)不能更改集合(也就是说,不能在枚举该集合的foreach循环中更改集合)。也许你可以描述一下你希望你的代码在最后做什么。你不需要添加任何新的变量,只需要获取表单上的组框数。@Sayse我不确定他是否跟踪它们和/或表单上是否有其他元素。所以光是数数孩子就有点复杂了。有了可用的信息,这是我唯一能想到的“简单”答案。OP不需要跟踪他们,表单就可以做到这一点this.Controls.OfType().Count()
谢谢你回答我的问题,但我想问你一个问题;第9组框;“if事件我必须写什么?”Sayse-huh,整洁。以前没听说过这个功能。谢谢分享。