C# YouTube Downloader
Пишу скачиватель видео с ютуба на либе VideoLibrary. В интерфейсе есть прогрессбар и две кнопки + еще поле для ввода, одна кнопка это скачать, а вторая указать папку куда скачивать. Я привязал к кнопке выбора папки диалоговое окно, но не могу вывести от туда результат и поместить туда путь до папки, а код указанный ниже выдает ошибку
Нет перегруженного метода для "downloadik_Click", который соответствует делегату "RoutedEventHandler"
using VideoLibrary;
using Ookii.Dialogs;
using Ookii.Dialogs.Wpf;
using WinForms = System.Windows.Forms;
namespace WpfApp4
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
WinForms.FolderBrowserDialog folderDialog = new WinForms.FolderBrowserDialog();
folderDialog.ShowNewFolderButton = false;
folderDialog.SelectedPath = System.AppDomain.CurrentDomain.BaseDirectory;
WinForms.DialogResult result = folderDialog.ShowDialog();
}
private void downloadik_Click(object sender, RoutedEventArgs e, string result)
{
string link = url.ToString();
var youTube = YouTube.Default;
var video = YouTube.Default.GetAllVideos(link).First(v => v.Resolution == 720);
var audio = YouTube.Default.GetVideo(link);
byte[] bytesvideo = video.GetBytes();
File.WriteAllBytes(result + video.FullName, bytesvideo);
}
}
}
Ответы (1 шт):
Автор решения: Pavel Popov
→ Ссылка
Сохраняйте выбранный путь в некую переменную вашей формы и используйте в дальнейшем ее. А аргумент result из downloadik_Click нужно убрать, иначе он не может быть обработчиком события нажатия кнопки. Я добавил еще проверку, на то выбран путь или нет.
private string _curDirectorySave;
private void Button_Click(object sender, RoutedEventArgs e)
{
WinForms.FolderBrowserDialog folderDialog = new WinForms.FolderBrowserDialog();
folderDialog.ShowNewFolderButton = false;
folderDialog.SelectedPath = System.AppDomain.CurrentDomain.BaseDirectory;
if (folderDialog.ShowDialog() == WinForms.DialogResult.OK)
_curDirectorySave = folderDialog.SelectedPath;
}
private void downloadik_Click(object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(_curDirectorySave))
{
MessageBox.Show("Выберите путь сохранения");
return;
}
string link = url.ToString();
var youTube = YouTube.Default;
var video = YouTube.Default.GetAllVideos(link).First(v => v.Resolution == 720);
var audio = YouTube.Default.GetVideo(link);
byte[] bytesvideo = video.GetBytes();
File.WriteAllBytes(_curDirectorySave + video.FullName, bytesvideo);
}