WinForms Dynamic Label - PullRequest
       12

WinForms Dynamic Label

2 голосов
/ 03 июня 2010

Я создаю динамические метки и позволяю пользователям изменять атрибуты меток, такие как backcolor и т. Д., Отправляя юникод. Однако я не знаю, как проверить, существует ли метка, поэтому я не могу манипулировать динамически создаваемой меткой. ниже мой код:

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 голосов
/ 03 июня 2010

Я думаю, что вы подошли к этой проблеме неправильно. Вы, очевидно, пытаетесь предложить пользователю возможность редактировать эти текстовые поля с помощью языкового интерфейса. Вам нужно либо создать полный анализатор, чтобы помочь вам в этом, либо взглянуть на альтернативную парадигму, возможно, следуя тому же подходу, который использует VS, чтобы позволить вам создавать и редактировать метки через интерфейс типа GUI. Таким образом, вы сможете лучше контролировать действия, которые можно выполнять без сложностей синтаксического анализа «естественного» языка.

0 голосов
/ 03 июня 2010
  • вы можете установить buttlbl_ в качестве члена класса, чтобы вы могли проверить, создан ли он
  • перед созданием вы можете найти его в этой коллекции элементов управления (по id)
...