1. 程式人生 > >WPF彈出一個視窗,並自動關閉

WPF彈出一個視窗,並自動關閉

最近用WPF做了一個小的demo,由於對於WPF不是很熟悉,在這個過程中遇到不少問題,這篇文章便是針對某個小需求的整理,這個需求便是:在WPF中,如何彈出一個視窗,並讓它定時自動關閉

我記得我最早的思路是在主視窗中開啟一個執行緒,這個執行緒每隔1s休眠一次,用這個執行緒來控制視窗的顯示和隱藏。那個時候,我不知道WPF中,有一個叫做Timer的類。可想而知,這除錯過程是多麼艱難與糾結……

然而,它用Timer來實現,卻是如此簡單,用以下的小case來展示它的實現:主視窗上一個按鈕,點選按鈕,彈出一個視窗,視窗中顯示一段文字,視窗3秒後自動關閉。

主視窗程式碼:

<Window x:Class="TestForWpf.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="517" Width="842" Background="White" WindowStartupLocation="CenterScreen">
    <Grid>
        <Button Content="Pop up" Height="23" HorizontalAlignment="Left" Margin="58,38,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
    </Grid>
</Window>

後臺程式碼:

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            PopupWindow win = new PopupWindow();
            win.Show();
        }
    }


彈出視窗程式碼:

<Window x:Class="TestForWpf.PopupWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="PopupWindow" Height="211" Width="401" ResizeMode="NoResize" WindowStyle="None" WindowStartupLocation="CenterScreen">
    <Grid Background="#dedede" Height="152" Width="359">
        <Label Margin="46,44,54,54" Height="40" Content="This is a self-closing window!" VerticalContentAlignment="Bottom" FontSize="18" FontWeight="Bold"></Label>
    </Grid>
</Window>


後臺程式碼:

    /// <summary>
    /// Interaction logic for PopupWindow.xaml
    /// </summary>
    public partial class PopupWindow : Window
    {
        private Timer timer = new Timer(3000);
        public PopupWindow()
        {
            InitializeComponent();

            timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
            timer.Start();
        }

        void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            timer.Stop();
            Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate()
            {
                this.Hide();
            });
        }
    }


效果圖:


 

相關推薦

WPF一個視窗自動關閉

最近用WPF做了一個小的demo,由於對於WPF不是很熟悉,在這個過程中遇到不少問題,這篇文章便是針對某個小需求的整理,這個需求便是:在WPF中,如何彈出一個視窗,並讓它定時自動關閉。 我記得我最早的思路是在主視窗中開啟一個執行緒,這個執行緒每隔1s休眠一次,用這個執行緒來

js瀏覽器視窗指定瀏覽器大小

<!-JavaScript開啟新的瀏覽器視窗,--> <!-window.open([URL],[視窗名稱],[引數字串])-> <!-URL:可選引數,在視窗中要顯示網頁的網址或路徑。如果省略這個引數,或者它的值是空字串,那麼視窗就不顯示任何文件。視窗名稱:可

MFC中按下Buttonbutton一個窗體的同一時候關閉本窗體

彈出 oda size win button class 隱藏 nbut top ?? CMyDlg *dlg = new CMyDlg(); //新建一個CMyDlg對象 this->ShowWindow(SW_HIDE);

從點選Button到一個MessageBox 背後發生了什麼

思考一個最簡單的程式行為:我們的Dialog上有一個Button, 當用戶用滑鼠點選這個Button時, 我們彈出一個MessageBox。 這個看似簡單的行為, 誰能說清楚它是如何執行起來的,背後究竟發生了什麼?  下面是我個人嘗試的解答: (1)我們的滑鼠點選事件到達裝置的

開啟app歡迎介面然後自動跳轉到主介面

//準備跳轉的 Timer timer = new Timer(); TimerTask task = new TimerTask() { @Override public void run() { //計算

安卓開發 對話方塊然後自動消失

1.定義全域性變數: AlertDialog dia; 2.呼叫方法: public void dialog2_give_content(String content_str)

視窗視窗視窗將值返回到父視窗

1、如圖,雙擊訂單號輸入框時彈出銷售記錄查詢子視窗   2、輸入訂單號查詢可以查詢到相應記錄,查詢到後雙擊就可以將對應的資訊顯示到父頁面了     那麼是如何實現的呢?   1、雙擊訂單號input框 &nbs

簡單演示螢幕視窗截圖的兩種方法(MessageBox截圖自動關閉

程式碼中提供了視窗截圖的兩種方法,但是在ScreenCapture.cs檔案中提供了多種螢幕截圖的方法 1、擷取button_click後彈出的視窗; 2、獲取指定標題的MessageBox,截圖,並在一秒鐘後自動關閉。 不貼程式碼了,直接上VS2008的工程了

python PyQt5 實現點選按鈕一個視窗

嘛,我今天就送一下福利吧 請注意:您在下載之前,請確認你下載的是python_UI.rar 1. 實現功能 首介面 點選進入系統後彈出介面 點選程式碼查重後彈出介面

layui button 按鈕提示視窗確定才進行

<button lay-id="{$id}" class='layui-btn layui-btn-normal correct_finish' onclick="return confirm("

程式執行時MySQL一個taskeng.exe. 內容如下: 關閉定時任務就可以

程式執行時,MySQL彈出一個taskeng.exe. 內容如下:=====================Start Initialization====================MySQL Installer is running in Community mod

android中監聽軟鍵盤的與隱藏獲取軟鍵盤的高度

最近專案中有一個需求上彈出軟鍵盤的時候,輸入框位移至輸入框上方,但是Activity中其他的VIew都不動。這個需求需要監聽軟軟鍵盤的彈出與隱藏,並獲取鍵盤的高度。上網找了一下發現,Android竟然沒有提供相應的介面。網上找到的替代方法中最常用的就是自定義根試圖從寫on

Android 開啟手機淘寶自動識別淘口令商品資訊

前言:大家都遇到過被莫名其妙拉進一個微信群,然後群主開始發一些商品的連結,我們點選這個連結,會讓我們複製一個口令(就像這個¥AzZK0hPyou5¥),當我們複製這個口 令開啟淘寶會自動彈出這個商品的資訊。今天,就來和大家分享一下,這個需求是如何實現的。 1.首先我們需要

一個登入層對登入進行校驗

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="彈出層.aspx.cs" Inherits="彈出層" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML

實現一個隱藏的div視窗body頁面變成灰色並且不可被編輯

當需要實現如下圖操作,點選服務評分,出現一個服務評分視窗用來填入相關表單資訊 可是這會讓我們開啟服務評分介面時還可以點選body主介面中的購物車等連結,這是不對的,因此我們可以使用層疊樣式表來指定外圍

每天00:00MySQL定時一個taskeng.exe

end host led 問題 start win cat 運行時 update 程序運行時,MySQL彈出一個taskeng.exe. 內容如下:=====================Start Initialization====================My

如何用jQuery實現一個層然後過3秒鐘後自動變淡然後消失

<!DOCTYPE HTML> < html > < head > < meta  charset = UTF -8> &l

zTree 資料載入前一個載入頁面提醒

jsp頁面新增一個div <div id="Loading"><span  style="font-size:30px ;color:#EBF7EE">正在載入,請稍候……</span></div> <script> $(f

python學習之網站的編寫(HTMLCSSJS)(十五)----------示例一個背景為半黑色前面是白框的窗功能(已經編好的框架)

效果圖,程式碼直接可應用,按自己的需要在其中加入想要的內容:  程式碼及講解: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <