2016-09-01 8 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++; 
    } 
関連する問題