C#WinForms需要以简单的左上角方式自动对齐控件内的一组标签

本文关键字:标签 一组 控件 简单 左上角 C#WinForms 方式自 对齐 | 更新日期: 2023-09-27 18:30:05

我想为我在这里解释的内容制作一个gui,用于编辑语句/方程/条件的C#可视化控件?

基本上它是一个表达式编辑器。每个表达式都由一个内容列表组成,该列表可以是文本字符串或参数。例如,一个表达式:

If x is greater than 0

包括:

String "If"
Parameter "variable" (= "x")
String "is"
Parameter "comparator" (= "greater than")
Parameter "value" (= "0")

因此,当用户想要编辑这样的表达式时,我必须(动态地)创建五个标签,并将它们放置在控件(Panel)中,并将onclick事件添加到其中不只是字符串的事件中,这样用户就可以打开一个窗口来更改比较器或变量名等。显然,标签必须在它们绑定的控件中排列。

问题是,我不知道是否已经有一种方法可以自动完成。我希望这些标签能像这页上的单词一样排列。当它合适时,把它放在上一个标签的右边,当它不合适时,放在下一行的开头。

我必须手动将它们移动到控件的OnResize()中吗?或者有自动的方法吗?

谢谢!

C#WinForms需要以简单的左上角方式自动对齐控件内的一组标签

尝试使用FlowLayoutPanel

//Sample:
//Assuming you are creating your labels from 
//List<string>

 List<string> labels=new List<string>();
    labels.Add("If");
    labels.Add("variable");
    labels.Add("=");
    labels.Add("5");
    for (int i = 0; i < labels.Count; i++)
    {
        Label lbl = new Label();
        lbl.Text = labels[i];
        flowLayoutPanel1.Controls.Add(lbl);
    }

查看FlowLayoutPanel。

来自文档:

FlowLayoutPanel控件以水平或垂直流动方向。其内容可以从一行包装到下一列或从一列到下一列。或者,其内容可以剪裁而不是包裹。