WinForms动态标签

时间:2010-06-03 14:27:22

标签: c# winforms dynamic label

我正在创建动态标签,并允许用户通过发送unicode来更改背景颜色等实验室的属性。但是我不知道如何检查标签是否存在因此我无法操纵动态创建的标签。下面是我的代码:

if ((InputBox.Text.StartsWith("π")) && (InputBox.Text.EndsWith("}")))// only process if the message starts with π and ends with }
{
    string Message = InputBox.Text;
    InputBox.Text = "";// Clear the box when done. 

    // Butt1 message line
    if (Message.StartsWith("πlabelt1"))
    {
        if (Message.StartsWith("πlabelt1_BackColor"))
        {
            Message = Message.Substring(19);
            //labelt1.BackColor = System.Drawing.Color.FromName(Message.Replace("}", ""));
        }
    }

    private void ImageBox_DragDrop(object sender, DragEventArgs e)
    { 
        //Graphics g = ImageBox.CreateGraphics();
        //g.DrawImage((Image)e.Data.GetData(DataFormats.Bitmap),
        //new Point(e.X - this.Left, e.Y - this.Top - 150));
        Point p2 = PointToClient(Cursor.Position);
        Label buttlbl_ = new Label();
        labelCount++;
        buttlbl_.Name = "labelt" + labelCount.ToString();
        buttlbl_.Location = new Point(p2.X, p2.Y);
        buttlbl_.Size = new System.Drawing.Size(37, 37);
        buttlbl_.BackColor = System.Drawing.Color.DarkGray;
        this.Controls.Add(buttlbl_);
        buttlbl_.BringToFront();
        ImageBox.Invalidate();
    }
}

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

  • 您可以将buttlbl_设置为类成员,以便检查是否已创建
  • 在创建之前,你可以在this.Controls集合中找到它(通过id)

答案 1 :(得分:0)

我认为你错误地解决了这个问题。您显然正在尝试为用户提供使用基于语言的界面编辑这些文本框的机会。您需要构建一个完整的解析器来帮助您或者查看替代范例,可能遵循VS用于允许您通过GUI类型接口创建和编辑标签的相同方法。这样,您就可以对可以完成的操作保持更严格的控制,而无需“自然”语言解析的复杂性。