2016-09-01 2 views
-1

Я хотел бы задать вопрос. Я получил этот код и намерен сделать мой динамический ярлык обновить значение без укладки на этикетке над другим.C# обновить значение на динамической метке

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace refresh_label 
{ 
    public partial class Form1 : Form 
    { 
     Int64 num1 = 0; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      Timer t1 = new Timer(); 
      t1.Interval = 1; 
      t1.Tick += new EventHandler(lbl_refresh); 
      t1.Enabled = true; 
      Label lbl = new Label(); 
      lbl.Text = num1.ToString(); 
      this.Controls.Add(lbl); 
     } 

     private void lbl_refresh(object sender, EventArgs e) 
     { 
      num1++; 
     } 
    } 
} 

//on this one it's working but staking labels. is there a way to refresh the label without staking it and then clear it? thank you for your time. 

private void Form1_Load(object sender, EventArgs e) 
{ 

    Timer t1 = new Timer(); 
    t1.Interval = 1; 
    t1.Tick += new EventHandler(lbl_refresh); 
    t1.Enabled = true; 
} 

private void lbl_refresh(object sender, EventArgs e) 
{ 
    num1++; 

    Label lbl = new Label(); 
    lbl.Text = num1.ToString(); 
    this.Controls.Add(lbl); 
    lbl.BringToFront(); 
} 
+0

для начала нет необходимости создавать новую метку каждый раз. вы просто хотите создать таймер и показать значения в одной метке ..? – MethodMan

+0

Не можете ли вы просто lbl.Text = string.Empty; очистить, lbl.Text = newValue; установить, lbl.Invalidate; заставить перерисовать? – Kevin

ответ

0

Пожалуйста, попробуйте это -

добавить метку во время разработки и изменения кода -

private void lbl_refresh(object sender, EventArgs e) 
{ 
    num1++; 

    lbl.Text = num1.ToString(); 
    lbl.Update(); 
} 
+0

привет спасибо, уже пробовал, но он говорит: имя 'lbl' существует в текущем контексте. Я могу уложить ярлык и очистить его, а также удалить его с помощью элементов управления, но при длительном запуске сохраняются ярлыки наложения, а когда я очищаю или удаляю, это создает мерцание, это моя проблема. –

+0

Объявите lbl в поле класса (то же место, где вы указали num1), чтобы он был доступен во всем классе. – Kevin

+0

ОК это сработало как шарм :) Большое вам спасибо. он работает, а не укладывается больше. Благодарю. –

0
Int64 num1 = 0; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     Timer t1 = new Timer(); 
     t1.Interval = 1; 
     t1.Tick += new EventHandler(lbl_refresh); 
     t1.Enabled = true; 
     Label lbl = new Label(); 

     lbl.Name="myLabel"; 
     lbl.Text = num1.ToString(); 
     this.Controls.Add(lbl); 
    } 

    private void lbl_refresh(object sender, EventArgs e) 
    { 
     Label l = Controls.Find("myLabel",true)[0] as Label; 
     l.Text = num1.ToString(); 
     num1++; 
    } 
Смежные вопросы