wpf(使用定時器)使用定時器操作UI界面


在項目實踐中,我們 可能會遇到需要將一些控件上顯示的內容只顯示一段時間過后清空。

下面我們來實現這種操作:

首先需要注意的是:在wpf中涉及到界面操作的話,一定要使用定時器DispatcherTime,DispatcherTimer是為wpf專門設計的,不然的話使用其他種類的定時器會提示界面資源被其他線程所擁有而無法更新界面。

首次我們需要聲明一個DispatcherTimer定時器

private  DispatcherTimer showTimer = new DispatcherTimer();

然后綁定定時器要處理的方法

 showTimer.Tick += new EventHandler(SetNull);       
private void SetNull(object sender,EventArgs e) { label1.Content = ""; }

之后,我們將規定多長時間后觸發定時器綁定的方法,並開啟定時器

showTimer.Interval = new TimeSpan(0, 0, 0, 6);
showTimer.Start();        

全部代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading;
using System.Windows.Threading;

namespace 使控件內容顯示一段時間后消失
{
    /// <summary>
    /// MainWindow.xaml 的交互邏輯
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private  DispatcherTimer showTimer = new DispatcherTimer();
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            SetLabel("jianjipan,您好");
            showTimer.Tick += new EventHandler(SetNull);
            showTimer.Interval = new TimeSpan(0, 0, 0, 6);
            showTimer.Start();          
        }
        private void SetLabel(string text)
        {           
            label1.Content = text;          
        }
        private  void SetNull(object sender,EventArgs e)
        {
            label1.Content = "";
        }
       
    }
}

實現的效果就是:點擊button按鈕后,在label控件上會出現“jianjipan,您好”的字符串,過6s之后,label控件不顯示任何值

補缺點:

小白我發現這個雖然讓控件內容為空了,但是定時器每隔6s就會刷新控件使其為“ ”。所以我們要定時器只執行一次就關閉定時器。

  private void SetNull(object sender, EventArgs e)           //使控件內容顯示一段時間后消失
        {
            int i = 0;    //保證定時器只執行一次
            if (i == 0)
            {
                label1.Content = "";
                i++;
            }
            if (i == 1)
            {
                showTimer.Stop();    //關閉定時器
            }
        }

這樣就是實現完整的功能啦(使控件上的內容顯示6s后消失)

源代碼如下:(啊啊啊啊啊  小白,不知道源代碼怎么上傳,求大神告知)


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM