Windows Phone 8 下载文件进度

后台代码:

public partial class MainPage : PhoneApplicationPage

    {

        private long siz;

        private long speed;

        private Stopwatch sw;

        private Stopwatch sw1;



        public MainPage()

        {

            InitializeComponent();

        }



        private void button1_Click(object sender, RoutedEventArgs e)

        {

            testspeed();

        }



        public void testspeed()

        {

            WebClient client = new WebClient();

            progressBar1.Value = 0.0;

            textBox2.Text = "0 %";

            client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(this.webClient_DownloadStringCompleted);

            client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(this.webClient_DownloadProgressChanged);

            sw = Stopwatch.StartNew();//用来记录总的下载时间

            sw1 = Stopwatch.StartNew();//用来记录下载过程中的时间片,用于计算临时速度

            client.DownloadStringAsync(new Uri("http://dl_dir.qq.com/qqfile/qq/QQ2011/QQ2011.exe"));

        }

        //下载过程事件

        public void webClient_DownloadProgressChanged(object s, DownloadProgressChangedEventArgs e)

        {

            textBox2.Text = e.ProgressPercentage.ToString() + " %";

            sw1.Stop();

            long num = e.BytesReceived / 1024;

            if (sw1.Elapsed.Seconds != 0)

            {

                speed = num / ((long)sw1.Elapsed.Seconds);

            }

            textBlock4.Text = this.speed + " KB/s";

            progressBar1.Value = e.ProgressPercentage;

            siz = e.TotalBytesToReceive;

            textBlock3.Text = siz/1024/1024 + "MB";

            sw1.Start();

        }

        //下载完成事件

        public void webClient_DownloadStringCompleted(object s, DownloadStringCompletedEventArgs e)

        {

            sw.Stop();

            siz = siz / 1024;

            long num = siz / ((long)sw.Elapsed.Seconds);

            sw.Reset();

            textBox1.Text = "下载完成!";

            textBlock1.Text = num + " KB/s";

        }

    }

}

XAML 设计代码:

<phone:PhoneApplicationPage 

    x:Class="DownLoad.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"

    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"

    FontFamily="{StaticResource PhoneFontFamilyNormal}"

    FontSize="{StaticResource PhoneFontSizeNormal}"

    Foreground="{StaticResource PhoneForegroundBrush}"

    SupportedOrientations="Portrait" Orientation="Portrait"

    shell:SystemTray.IsVisible="True">

    <Grid x:Name="LayoutRoot" Background="Transparent">

        <Grid.RowDefinitions>

            <RowDefinition Height="Auto"/>

            <RowDefinition Height="*"/>

        </Grid.RowDefinitions>



        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">

            <TextBlock x:Name="ApplicationTitle" Text="WP7开发者" Style="{StaticResource PhoneTextNormalStyle}"/>

            <TextBlock x:Name="PageTitle" Text="下载进度" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>

        </StackPanel>



        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

            <Grid.RowDefinitions>

                <RowDefinition Height="114*"/>

                <RowDefinition Height="493*"/>

            </Grid.RowDefinitions>

            <ProgressBar Foreground="Green" Height="30" HorizontalAlignment="Left" Margin="9,79,0,0" Name="progressBar1" VerticalAlignment="Top" Width="377" Value="0" Maximum="100" FontSize="72" BorderThickness="0"/>

            <TextBlock Height="53" Margin="12,20,-16,0" Name="textBox1" Text="正在下载文件 . . ." VerticalAlignment="Top" Width="460"/>

            <TextBlock Margin="6,24,287,427" Name="result" Text="下载的速度" Grid.Row="1"/>

            <TextBlock  Foreground="White" Height="59" HorizontalAlignment="Left" Margin="203,13,0,0" Name="textBox2" Text=""  VerticalAlignment="Top" Width="123"/>

            <Button Content="开始下载" Height="72" HorizontalAlignment="Left" Margin="96,244,0,0" Name="button1" VerticalAlignment="Top" Width="199" Click="button1_Click" Grid.Row="1"/>

            <TextBlock Height="47"  Margin="6,101,254,0" Name="finalresult" Text="平均的速度" VerticalAlignment="Top" Grid.Row="1"/>

            <TextBlock Height="47" HorizontalAlignment="Left" Margin="132,89,0,0" Name="textBlock1" Text="" VerticalAlignment="Top" Width="156" Grid.Row="1"/>

            <TextBlock Height="47" HorizontalAlignment="Left" Margin="6,166,0,0" Name="textBlock2" Text="文件的大小" VerticalAlignment="Top" Width="127" Grid.Row="1"/>

            <TextBlock Height="47" HorizontalAlignment="Right" Margin="0,166,168,0" Name="textBlock3" Text="" VerticalAlignment="Top" Grid.Row="1" Width="156"/>

            <TextBlock Height="47" HorizontalAlignment="Right" Margin="0,19,168,0" Name="textBlock4" Text="" VerticalAlignment="Top" Grid.Row="1" Width="156"/>

        </Grid>

    </Grid>

</phone:PhoneApplicationPage>

运行结果图:

image     image

你可能感兴趣的:(windows phone)