3

我想在我的应用程序中的 maskedtextbox 上设计更改时间,例如时间每秒都在变化的窗口。我已将 maskedtexbox1 设置如下:

maskedTextBox1.Text = DateTime.Now.ToShortTimeString();

它显示当前系统的时间很短,但它并没有像 Windows 那样每秒都在变化。怎么做?

我在 Visual Studio 2005 上,.NET低于3.5。

4

3 回答 3

1

我想你需要设置一个maskedTextBox1每秒更新你的计时器。

有关如何执行此操作,请参阅:将计时器添加到 Windows 窗体应用程序

干杯。基思。

于 2012-11-04T09:20:18.677 回答
1

您可以使用System.Windows.Forms.Timer每秒更新文本框值,例如:

var timer = new Timer();
timer.Interval = 1000;

timer.Tick += delegate
            {
                textBox1.Text = DateTime.Now.ToLongTimeString();
            };

timer.Start();
于 2012-11-04T09:22:33.053 回答
1

我会使用计时器并每秒触发一个事件来更新时间。

  1. 创建一个计时器(System.Windows.FormsTimer包中的类实例)。
  2. 将其频率设置为 1 秒(即 1000 毫秒)。
  3. 告诉它在它关闭时调用什么方法(事件处理程序Kaboom)。

在您的可执行代码中的某处,您可以通过键入以下内容来执行此操作。

Timer ticker= new Timer();
ticker.Interval = 1000;
ticker.Tick += new EventHandler(Kaboom);

在同一个类中(或者,如果你有信心怎么做,你可以在某个地方访问代码)你还为触发的滴答事件创建处理程序,以便你做出的关于在什么时候调用的方法的承诺计时器关闭保持。

private void Kaboom(Object sender, EventArgs eventArgs)
{
  // Execute the tickability code
  MaskedTextBox1.Text = DateTime.Now.ToShortTimeString();
}

另外,当你觉得你准备好了时,不要忘记真正开始你的代码。

MyTimer.Start();

多田!

编辑:

为了完整起见,我还将粘贴@CuaonLe 的部分回复(.NET 3.5 或更高版本的能力和要求更高的阈值)。

Timer timer = new Timer { Interval = 1000 };
timer.Tick += (obj, args) 
  => MaskedTextBox1.Text = DateTime.Now.ToLongTimeString();
timer.Start();
于 2012-11-04T09:26:29.700 回答