【问题标题】:c# refresh value on a dynamic labelc#在动态标签上刷新值
【发布时间】:2017-01-09 20:17:05
【问题描述】:

我想问一个问题。我得到了这段代码,我的目的是让我的动态标签刷新值,而不用在另一个标签上堆叠。

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

【问题讨论】:

  • 对于初学者来说,无需每次都创建新标签。你只是想创建一个计时器并在单个标签中显示值..?
  • 你不能只是 lbl.Text = string.Empty;清除,lbl.Text = newValue;设置,lbl.Invalidate;强制重绘?

标签: c# label refresh controls


【解决方案1】:

请试试这个 -

在设计时添加标签并更改代码 -

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

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

【讨论】:

  • 您好,谢谢,已经尝试过了,但它说:名称“lbl”确实存在于当前上下文中。我可以堆叠标签并清除它,也可以使用控件将其删除,但是长时间运行会一直堆叠标签,当我清除或删除它时会产生闪烁,这就是我的问题。
  • 在班级范围内声明 lbl(与您声明 num1 相同的地方),以便它在整个班级中可用。
  • 好的,它就像魅力一样 :) 非常感谢。它正在工作,不再堆叠。谢谢。
【解决方案2】:
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++;
     }

【讨论】:

  • 您好,抱歉迟到了。有趣的是,它也工作得很好,无论如何它是解决问题的好方法。谢谢:)
猜你喜欢
  • 2014-03-23
  • 2019-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 2013-11-28
相关资源
最近更新 更多