WPF新手学习经验分享 点击按钮,让按钮处于无法选取状态3秒钟与此同时还可以移动窗体

2016-08-22 07:56:41来源:CSDN作者:yushaopu人点击


镇场诗:吾心为众人,苦海作舟航。学术有小成,愿帮大家忙。诚心说愿望,愿见文者得启发。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


先来一个错误的,


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;namespace WpfApplication1{    /// <summary>    /// MainWindow.xaml 的交互逻辑    /// </summary>    public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();        }        private void button_Click(object sender, RoutedEventArgs e)        {            button.IsEnabled = false;            label.Content ="人家很忙的";            Thread.Sleep(3000);            label.Content = "什么都没有做";            button.IsEnabled = true;        }    }}

现象:

点了按钮,窗口卡死三秒钟。而且貌似什么都没有发生。但是呢,其实所有代码都进行了。

Thread.Sleep(3000);
先执行了这条语句,先把线程暂停了3秒。然后,一瞬间执行了所有的代码。


怎么改?异步处理!

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;namespace WpfApplication1{    /// <summary>    /// MainWindow.xaml 的交互逻辑    /// </summary>    public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();        }        private async void button_Click(object sender, RoutedEventArgs e)        {            button.IsEnabled = false;            label.Content ="人家很忙的";            button.Content = "不可点击的一个按钮";            await Task.Delay(3000);            label.Content = "现在空闲着呢";            button.IsEnabled = true;        }    }}



xaml的代码是这样的,

<Window x:Class="WpfApplication1.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:WpfApplication1"        mc:Ignorable="d"        Title="MainWindow" Height="350" Width="525">    <Grid>        <Button x:Name="button" Content="这是一个可以点的按钮" HorizontalAlignment="Left" Height="56" Margin="183,168,0,0" VerticalAlignment="Top" Width="140" Click="button_Click"/>        <Label x:Name="label" HorizontalAlignment="Left" Height="35" Margin="183,101,0,0" VerticalAlignment="Top" Width="190" Content="什么都没有做"/>    </Grid></Window>



参考书籍:C#图解教程 (第四版) 北京:人民邮电出版社


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
将一些学习到的知识写入博客中,一是希望为自强不息的人做点事情,二是通过博客,可以防止知识遗忘。三是知识碎片化的发展趋势。

WPF是一项不错的技术,希望大家能够坚持下去。在学习的过程中,加强自己的思维方式,接受新事物的能力。这样的话,可以在日新月异的变化中立足了吧。
如果您发现我有什么写的不对的地方,请您指正。我会尽快修改的。
我不是大神,我只是一个正在奋斗的普通人。所以希望大家看了我的文章,能够得到一些启发。如果能解决问题,那就太好了。

注:此文仅用于学术研究。如果我侵犯了您的权益,请告知。看到您的告知后,我将及时作出处理。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台