Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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# 对设计器的控制太多是个坏主意吗?_C#_Winforms_Radio Button - Fatal编程技术网

C# 对设计器的控制太多是个坏主意吗?

C# 对设计器的控制太多是个坏主意吗?,c#,winforms,radio-button,C#,Winforms,Radio Button,我正在开发一个winform应用程序,它需要大约65个单选按钮。我在这个论坛上读到有人说他们不会在设计师身上放那么多按钮。而是在运行时显示按钮。我遇到的问题是按钮没有对齐。甚至在面板内但当一个设计师拖动65个单选按钮时,它们就完美地排列起来了。设计上有那么多按钮是个坏主意吗?如果是,为什么?谢谢。我认为65个单选按钮太多了,无论您是使用designer还是在运行时添加它们都没有关系,您可以使用组合框来代替 但是,如果您认为需要在运行时使用这些单选按钮,而您的问题是在一列中对齐它们(如您在评论中所

我正在开发一个winform应用程序,它需要大约65个单选按钮。我在这个论坛上读到有人说他们不会在设计师身上放那么多按钮。而是在运行时显示按钮。我遇到的问题是按钮没有对齐。甚至在
面板内
但当一个设计师拖动65个单选按钮时,它们就完美地排列起来了。设计上有那么多按钮是个坏主意吗?如果是,为什么?谢谢。

我认为65个单选按钮太多了,无论您是使用designer还是在运行时添加它们都没有关系,您可以使用组合框来代替

但是,如果您认为需要在运行时使用这些单选按钮,而您的问题是在一列中对齐它们(如您在评论中所说),那么:

  • 您可以使用
    面板
    向面板添加单选按钮,并将单选按钮的
    停靠
    设置为
    顶部

  • 您还可以使用
    FlowLayoutPanel
    并在添加每个单选按钮后设置中断

  • 您还可以对一列使用
    TableLayoutPanel
    ,并向行中添加单选按钮

示例-使用面板

在表单中添加一个面板,并将其设置为
AutoScroll
property
true
。然后编写这样的代码,将单选按钮动态添加到面板:

//You can have radio texts in a list.
//You can load them from database, file or somewhere else, or define them for example here
var list = new List<string>
{
    "First radio text", "Second radio text", "Third radio text", "And so on"
};

this.panel1.SuspendLayout();
for (var i = 0; i < list.Count; i++)
{
    var r = new RadioButton();
    r.Text = list[i];
    r.Tag = i;
    r.Name = string.Format("r{0}", i);
    r.Dock = DockStyle.Top;
    r.CheckedChanged += r_CheckedChanged;
    this.panel1.Controls.Add(r);
    r.BringToFront();
}
this.panel1.ResumeLayout(true);
要访问名为的单选按钮,可以使用:

//find radio number 26
var radio = (RadioButton)this.panel1.Controls["r25"];

此外,当您将单选按钮添加到面板时,您可以将其存储在
列表中
,并在以后访问它们。

65单选按钮太多了,无论您是使用designer还是在运行时添加它们都无所谓。为什么不使用
组合框呢?我认为这对最终用户来说是一个更好的可见性。我有65个代表合同条款的段落,基于最终用户选择的单选按钮,该段落将显示出来。示例:单选按钮32表示第3.02.06条。等等。你可以选择任何你认为更适合你的应用程序的解决方案:)但我认为如果你需要一些帮助,比如调整单选按钮,最好问一个具体的问题。这个问题现在太笼统了,而且是基于观点的。@Reza我很感谢你的评论,我是来学习的,请给我一个例子,说明如何在面板上排列单选按钮。你喜欢将它们放在一列还是多列中?我知道我知道,我需要更多帮助。如何以及在何处放置if-else语句。我将代码的第一部分放在button1中以生成创建单选按钮的代码,如何调用button2上的每个单选按钮?我还把代码的第二部分放在按钮2中????谢谢。你需要什么
if
语句?你想在哪里调用单选按钮?我想能够调用按钮2单选按钮上的任何if语句。换句话说,如果选中单选按钮1,请执行此操作,等等。你可能需要在
r\u checked changed
中编写一些代码,在那里你可以使用
收音机
和它的
已选中
或其他属性。另外,因为我们以这种方式设置单选按钮的名称
r.name=string.Format(“r{0}”,i)
,只要您想按名称访问任何单选按钮,就可以使用
var radio=(RadioButton)this.panel1.Controls[“r0”](0,1,2,3…直到列表。计数-1)并使用
收音机
。另外,在向表单中添加无线电时,可以使用
var radios=new List()
并将收音机添加到收音机中,然后您可以通过
收音机[15]
访问每个收音机。
//find radio number 26
var radio = (RadioButton)this.panel1.Controls["r25"];