2010-06-03 2 views
2

동적 레이블을 생성하고 사용자가 유니 코드를 보내어 백 색과 같은 레이블의 특성을 변경하도록합니다. 그러나 레이블이 존재하는지 확인하는 방법을 모르므로 동적으로 생성 된 레이블을 조작 할 수 없습니다. 아래 코드는 내 코드입니다 :WinForms 동적 레이블

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(); 
    } 
} 

어떤 제안이 있습니까?

답변

0
  • 나는 당신을 생각
0

를가 생성되기 전에

  • 을 만든 경우 확인할 수 있습니다 (ID로) this.Controls 컬렉션을 찾을 수 있도록 클래스 멤버로 buttlbl_ 설정할 수 있습니다 ' 이 문제에 잘못 접근했습니다. 사용자는 언어 기반 인터페이스를 사용하여이 텍스트 상자를 편집 할 수있는 기회를 사용자에게 제공하려는 것입니다. VS를 사용하여 GUI 유형 인터페이스를 통해 레이블을 작성하고 편집 할 수있는 동일한 접근법에 따라 여기에 도움이되거나 다른 패러다임을 보도록 전체 파서를 작성해야합니다. 그렇게하면 '자연스러운'언어 파싱의 복잡성없이 완료 할 수있는 작업을보다 엄격하게 제어 할 수 있습니다.