Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅从4个枚举值中获取1个按钮,为什么?_C#_.net_User Interface - Fatal编程技术网

C# 仅从4个枚举值中获取1个按钮,为什么?

C# 仅从4个枚举值中获取1个按钮,为什么?,c#,.net,user-interface,C#,.net,User Interface,我需要生成枚举值作为单选按钮,如下所示,但是对于一个4,5值的道具,我只得到一个带有1个按钮的groupbox,item1。我错在哪里 private void CreateButton(List<object> prop) { GroupBox gb = new GroupBox(); gb.Location = new Point(locationX, nextLocationY); gb.Name = "groupBox" + countControl

我需要生成枚举值作为单选按钮,如下所示,但是对于一个4,5值的道具,我只得到一个带有1个按钮的groupbox,item1。我错在哪里

private void CreateButton(List<object> prop) 
{
    GroupBox gb = new GroupBox();
    gb.Location = new Point(locationX, nextLocationY);
    gb.Name = "groupBox" + countControls;
    gb.Text = "some object";
    countControls++;
    foreach (var p in pr) 
    {
        ObjectType pType = p.Type;
        if (pType is Enum) 
        { 
            var TypesArray = Enumerable.ToArray(((Enum)pType).Values);
            foreach (var enumType in TypesArray) 
            {
                radioButtonY = 10;
                RadioButton rb = new RadioButton();
                rb.Appearance = Appearance.Button;
                rb.Width = rbWidth;
                rb.Height = rbHeight;
                rb.Name = enumType.Name + countControls;
                rb.Text = enumType.Name;
                countControls++;
                rb.Location = new Point(radioButtonX, radioButtonY);
                radioButtonY += rbHeight;

                gb.Controls.Add(rb);

                rb.CheckedChanged += rb_CheckedChanged;
            }
        }
    }
    gb.Height = 5 * rbHeight + 20;
    gb.Width = rbWidth + 20;
    nextLocationY += gb.Height + MARGIN;
    Controls.Add(gb);
}
private void CreateButton(列表属性)
{
GroupBox gb=新的GroupBox();
gb.位置=新点(位置X,下一个位置Y);
gb.Name=“groupBox”+countControls;
gb.Text=“某个对象”;
countControls++;
foreach(pr中的var p)
{
ObjectType pType=p.Type;
if(pType为枚举)
{ 
var TypesArray=可枚举的.ToArray(((Enum)pType).Values);
foreach(TypesArray中的变量enumType)
{
radioButtonY=10;
RadioButton rb=新RadioButton();
rb.Appearance=Appearance.Button;
rb.宽度=rb宽度;
rb.高度=rb高度;
rb.Name=enumType.Name+countControls;
rb.Text=enumType.Name;
countControls++;
rb.位置=新点(radioButtonX,radioButtonY);
radioButtonY+=RBH高度;
gb.Controls.Add(rb);
rb.CheckedChanged+=rb_CheckedChanged;
}
}
}
gb.高度=5*RB高度+20;
gb.宽度=rbWidth+20;
nextLocationY+=gb.高度+边距;
控件。添加(gb);
}

您可能需要这一行

radioButtonY = 10;
要退出内部循环,否则将始终获得相同的Y值,并且按钮堆叠在一起

radioButtonY = 10;
foreach (var enumType in TypesArray) {
   .....
   radioButtonY += rbHeight;

}

很好,谢谢。有没有关于如何使这个展示整洁的建议?也许按钮是水平的,而新的分组框总是在它们的正下方?我正在努力,但还没有完全达到目标,如果不知道enum文本以及这段代码将创建多少GroupBox和radiobutton,他们似乎很难说。我也在使用gb.宽度、高度和按钮。但不知何故,我似乎把它们放在了错误的地方,因为输出是随机的。另外,由于这是在运行时进行的,所以我在顶部使用了Controls.Clear,因此每次输入新对象时,它都会重新填充数据。但似乎是错误的,因为现在当我在运行时移动到下一个对象时,一切都消失了