0

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

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

If x is greater than 0

由组成:

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

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

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

我是否必须手动移动它们所在控件的 OnResize(),或者是否有自动化的方法可以做到这一点?

谢谢!

4

2 回答 2

3

看看FlowLayoutPanel

从文档:

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

于 2012-04-05T20:39:00.197 回答
3

尝试使用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);
    }
于 2012-04-05T20:44:21.543 回答