개발

[C#, wpf] 다운로더 만들기

딱딱키보드 2023. 6. 4. 14:52
728x90
SMALL
  1. WPF 프로젝트 만들기
    • Visual Studio를 열고 새 프로젝트를 만들고, 템플릿에서 WPF 앱을 선택합니다.
  2. UI 디자인
    • 디자인 탭에서 UI 디자인을 시작합니다.
    • Label, ProgressBar, Button 등의 UI 컨트롤을 추가하여 다운로드 상태 및 진행률을 표시합니다.
  3. 다운로드 기능 추가
    • WebClient 클래스를 사용하여 파일을 다운로드할 수 있습니다.
    • 다운로드 버튼 클릭 시 이벤트를 추가하여 WebClient.DownloadFileAsync() 메서드를 호출합니다.
    • 다운로드 진행률에 대한 이벤트 핸들러를 추가하여 ProgressBar의 값을 업데이트합니다.
  4. 다운로드 중인 파일 취소 기능 추가 (선택 사항)
    • WebClient 객체의 CancelAsync() 메서드를 호출하여 다운로드를 중지할 수 있습니다.
    • 취소 버튼을 추가하고 이벤트 핸들러를 만듭니다.
  5. 코드 정리 및 디버깅
    • 코드를 정리하고 필요한 예외 처리를 추가합니다.
    • 디버깅을 위해 코드를 실행하고 테스트합니다.
using System;
using System.ComponentModel;
using System.Net;
using System.Windows;
using System.Windows.Controls;

namespace WpfDownloader
{
    public partial class MainWindow : Window
    {
        private WebClient client;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void btnDownload_Click(object sender, RoutedEventArgs e)
        {
            client = new WebClient();
            client.DownloadFileAsync(new Uri(txtUrl.Text), "downloadedFile");

            // Progress event handler
            client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
        }

        private void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            progressBar.Value = e.ProgressPercentage;
        }

        private void btnCancel_Click(object sender, RoutedEventArgs e)
        {
            client.CancelAsync();
        }
    }
}

WebClient 객체를 사용하여 다운로드를 수행하며, DownloadProgressChanged 이벤트 핸들러를 사용하여 ProgressBar를 업데이트합니다. 또한 취소 버튼을 추가하여 WebClient 객체의 CancelAsync() 메서드를 호출하여 다운로드를 취소할 수 있습니다.

 

xaml은 다음과 같습니다.

<Window x:Class="WpfDownloader.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WPF Downloader" Height="150" Width="350">
    <Grid Margin="10">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        
        <Label Grid.Row="0" Content="File URL:"/>
        <TextBox Grid.Row="1" x:Name="txtUrl" Margin="0,5,0,10" />
        
        <Button Grid.Row="2" x:Name="btnDownload" Content="Download" Click="btnDownload_Click" />
        <Button Grid.Row="2" x:Name="btnCancel" Content="Cancel" Click="btnCancel_Click" Margin="10,0,0,0" />
        
        <ProgressBar Grid.Row="3" x:Name="progressBar" Margin="0,10,0,0"/>
    </Grid>
</Window>

 

Window를 만들고 Grid를 사용하여 다운로드 UI를 배치합니다. Label, TextBox, Button, ProgressBar 등의 컨트롤을 추가하여 UI를 디자인합니다. 버튼 컨트롤에는 클릭 이벤트 핸들러가 추가되어 있습니다. 또한 취소 버튼도 추가하였습니다. 위의 C# 코드 예제와 함께 사용하면 WPF 다운로더를 구현할 수 있습니다.

728x90
LIST

'개발' 카테고리의 다른 글

[C언어] string 함수들 (예제포함)  (0) 2023.06.06
[C#, WPF] 계산기 만들기  (0) 2023.06.05
[C#, WPF] 그리드 만들기  (0) 2023.06.03
[C#] 문자열과 숫자 형변환 방법  (0) 2023.06.02
[C#] Chart 사용법  (0) 2023.06.01