2015-01-12 2 views
0

Я использую следующий код для создания нескольких новых ярлыков на панели 1 при поиске в базе данных. Есть ли возможность удалить ярлык, если я удалю одно имя в моей базе данных?C# Удалить ярлык после создания программно

public void labelLocate(string name, string labelLocate, int x, int y) 
{ 
    // name is the ID in the database 
    var label = this.Controls.OfType<Label>().FirstOrDefault(l => l.Name == name); 
    if (label != null) this.Controls.Remove(label); 
    Label labelstring = new Label(); 
    labelstring.Width = 0; 
    labelstring.Text = name; 
    labelstring.Name = name;    
    labelstring.AutoSize = true; 
    this.Controls.Remove(labelstring); 
    this.Controls.Add(labelstring); 
    labelstring.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
    labelstring.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 
    labelstring.BringToFront(); 

    switch (labelLocate) 
    { 
     case "Up": labelstring.Location = new Point(x + (panel1.Location.X + 3), (y - 20) + (panel1.Location.Y + 3)); 
      break; 
     case "Down": labelstring.Location = new Point(x + (panel1.Location.X + 3), (y) + 5 + (panel1.Location.Y + 3)); 
      break; 
     case "Left": labelstring.Location = new Point(x - 5 - (labelstring.Width) + (panel1.Location.X + 3), y + 5 + (panel1.Location.Y + 3)); 
      break; 
     case "Right": labelstring.Location = new Point(x + 10 + (panel1.Location.X + 3), y + 5 + (panel1.Location.Y + 3)); 
      break; 
    } 
} 
+0

Это не имеет смысла (IMHO), чтобы добавить [мой код] (HTTP : //stackoverflow.com/a/27897948/284240) в верхней части метода. Почему вы хотите удалить элемент управления, прежде чем добавлять его? Вы хотите удалить его, когда элемент был удален в базе данных, поэтому вы должны поместить его в конце этого метода. –

+0

@Tim Schmelter Моя программа смогла добавить/удалить/отредактировать «ID», поэтому, когда я обновляюсь в своей базе данных, я должен позвонить этому коду, чтобы проверить ID. Если идентификатор действителен, то создайте новый ярлык, иначе удалите те, которые я создал ранее. Я пытаюсь поставить в конце кода, но его все равно то же самое. – JefferyLR

ответ

2

Вы можете использовать ControlCollection.Remove и LINQ:

var label = this.Controls.OfType<Label>().FirstOrDefault(l => l.Name == "TheID"); 
if(label != null) 
    this.Controls.Remove(label); 
+0

Попробуйте этот метод раньше. После того, как я удалил «ID» в моей базе данных, метка все еще была там. – JefferyLR

+0

@JefferyLR: вы должны сами называть этот код, когда вы удаляете его в базе данных. Он не запускается автоматически. Кроме того, какой-то код вы уже пробовали, попробовали ли вы этот код? –

+0

Да, я снова запустил подпрограмму после удаления ее в базе данных. – JefferyLR

0

Найди Cotrol, а затем:

if(label != null) 
      label.Dispose(); 
+0

Привет, @cristi Roman. Проблема заключается в том, как найти мой контроль к моменту создания этикетки программным путем – JefferyLR

Смежные вопросы