wpf創建用戶控件(計時器控件)


在vs中新增用戶控件

前台xaml如下代碼:

<UserControl x:Class="Zh.SelfServiceEquipment.UI.ZhControls.CountDownTimeControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Zh.SelfServiceEquipment.UI.ZhControls"
             mc:Ignorable="d" 
             d:DesignHeight="50" d:DesignWidth="300"
             Loaded="UserControl_Loaded">
    <Grid>
        <StackPanel Orientation="Horizontal">
            <Label Content="倒計時" Foreground="White" FontSize="20" VerticalAlignment="Center"></Label>
            <Label Content="30" Foreground="Red" FontSize="25" VerticalAlignment="Center" x:Name="lblTime"></Label>
            <Label Content="秒" Foreground="White" FontSize="20" VerticalAlignment="Center"></Label>
        </StackPanel>
    </Grid>
</UserControl>

CS代碼:

public partial class CountDownTimeControl : UserControl
    {
        public delegate void CountDownTimeOutEventHandler(object sender);
        public event CountDownTimeOutEventHandler OnCountDownTime;
        private System.Windows.Threading.DispatcherTimer dTime;//定義事件,在倒計時結束的時候進行調用
        public CountDownTimeControl()
        {
            InitializeComponent();
            StartCountdownTime();
        }
        private int _count;

        public int Count//定義時間,並將該時間的值賦值給前台頁面
        {
            get { return _count; }
            set { _count = value; this.lblTime.Content = _count; }
        }
        public void StartCountdownTime() {
            dTime = new System.Windows.Threading.DispatcherTimer();
            dTime.Interval = new TimeSpan(0,0,1);
            dTime.Tick += DTime_Tick;
        }
        private void DTime_Tick(object sender, EventArgs e)
        {
            if (Count-- == 1)
            {
                this.dTime.Stop();
                if (OnCountDownTime!=null)
                {
                    this.OnCountDownTime(this);
                }
            }
        }
        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            dTime.Start();
        }
    }

接下來就是在MainWindow.xaml文件中對該控件進行引用

在前台頁面命名空間寫入

xmlns:zhControls="clr-namespace:Zh.SelfServiceEquipment.UI.ZhControls"

其中zhControls是隨便定義的,Zh.SelfServiceEquipment.UI.ZhControls是項目中用戶控件所在的命名空間

MainWindows.xaml前台代碼如下

<Window x:Class="Zh.SelfServiceEquipment.UI.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Zh.SelfServiceEquipment.UI"
        xmlns:zhControls="clr-namespace:Zh.SelfServiceEquipment.UI.ZhControls"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid Background="Black">
        <WrapPanel>
            <zhControls:CountDownTimeControl Count="10" OnCountDownTime="CountDownTimeControl_OnCountDownTime"></zhControls:CountDownTimeControl>
        </WrapPanel>
    </Grid>
</Window>

MainWindow.xaml.cs代碼

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        private void CountDownTimeControl_OnCountDownTime(object sender)
        {
            MessageBox.Show("倒計時結束");
        }
    }

大功告成,讓我們看看運行結果

 


免責聲明!

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



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