void OnButtonSelectPathClick(object sender, EventArgs e) { if (Filters != null) { // Handle file selection using (var dialog = new OpenFileDialog()) { foreach (var filter in Filters) { dialog.Filters.Add(filter); } if (TextBoxPath.Text.Length != 0) { var fileInfo = new FileInfo(TextBoxPath.Text); if (fileInfo.Exists) { Debug.Assert(fileInfo.DirectoryName != null, "fileInfo.DirectoryName != null"); dialog.Directory = new Uri(fileInfo.DirectoryName); } else { dialog.Directory = new Uri(Utilities.ApplicationBaseDirectory); } } if (dialog.ShowDialog(this) == DialogResult.Ok) { TextBoxPath.Text = Utilities.GetRelativePath(dialog.FileName); } } } else { // Handle directory selection using (var dialog = new SelectFolderDialog()) { if (TextBoxPath.Text.Length != 0) { var directory = Utilities.GetAbsolutePath(TextBoxPath.Text); if (Directory.Exists(directory)) { dialog.Directory = directory; } } if (dialog.ShowDialog(this) == DialogResult.Ok) { TextBoxPath.Text = Utilities.GetRelativePath(dialog.Directory); } } } TextBoxPath.SelectAll(); TextBoxPath.Focus(); }
/// <summary> /// 実行。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ButtonExecute_Click(object sender, RoutedEventArgs e) { var path = TextBoxPath.Text; if (string.IsNullOrEmpty(path)) { MessageBox.Show("対象のファイル/フォルダパスを指定してください。", "警告", MessageBoxButton.OK, MessageBoxImage.Warning); TextBoxPath.Focus(); return; } var targets = new List <string>(); if (File.Exists(TextBoxPath.Text)) { targets.Add(TextBoxPath.Text); } else if (Directory.Exists(TextBoxPath.Text)) { var availableExtensions = new List <string>() { ".png", ".jpg", ".jpeg", }; var files = Directory.GetFiles(TextBoxPath.Text); targets.AddRange(files.Where(x => availableExtensions.Contains(Path.GetExtension(x)))); } var iconConverter = new Converter(); foreach (var filePath in targets) { var icon = iconConverter.CreateIconImageFromFilePath(filePath); icon.Save(Path.ChangeExtension(filePath, ".conv.ico"), ImageFormat.Icon); } }
private void TextBoxPath_LayoutUpdated(object sender, object e) { TextBoxPath.Focus(FocusState.Programmatic); TextBoxPath.LayoutUpdated -= TextBoxPath_LayoutUpdated; }