WPFでファイルの変換ツールを作成しており、TextBoxにファイルをドロップしてパスを得るコードをネットの情報を参考に書きました。
これは想定通りに動作しているのですが、出力ウィンドウではドロップするごとに例外が投げられた旨の表示が出ています。
また、TextBox_Dropメソッド内を空にしても同様に投げられました。
原因がわかる方がいらっしゃいましたらご教示ください、よろしくお願いします。
追記:
ドロップしたファイルはzip・txt・png・xlsなどです。
フォルダドロップも行っています。
これらについて単体でのドロップ・複数組み合わせでのドロップを試しましたが、必ず例外が投げられる現象が発生しています。
#環境
Windows7 Professional 64bit
Visual Studio Community 2017 Ver 15.7.3
ターゲットフレームワーク .net Framework 4.7.1
###MainWindow.xaml
<Window x:Class="Converter.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:Converter" mc:Ignorable="d" Title="MainWindow" Height="230" Width="400"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="2*"/> <RowDefinition Height="2*"/> <RowDefinition Height="1*"/> </Grid.RowDefinitions> <TextBox x:Name="TextBoxInput" Height="24" Margin="10,25,10,0" TextWrapping="Wrap" VerticalAlignment="Center" Grid.Row="0" PreviewDragOver="TextBox_PreviewDragOver" Drop="TextBox_Drop"/> <Label Content="入力パス" Margin="10,-25,0,0" VerticalAlignment="Center" Grid.Row="0"/> <TextBox x:Name="TextBoxOutput" Height="24" Margin="10,25,10,0" TextWrapping="Wrap" VerticalAlignment="Center" Grid.Row="1" PreviewDragOver="TextBox_PreviewDragOver" Drop="TextBox_Drop"/> <Label Content="出力パス" Margin="10,-25,0,0" VerticalAlignment="Center" Grid.Row="1"/> <Button x:Name="ButtonExecute" Content="変換" HorizontalAlignment="Right" Margin="0,0,20,0" VerticalAlignment="Center" Width="75" Grid.Row="2" Click="ButtonExecute_Click"/> </Grid> </Window>
###MainWindow.xaml.cs
C#
1/// <summary> 2/// MainWindow.xaml の相互作用ロジック 3/// </summary> 4public partial class MainWindow : Window 5{ 6 public MainWindow() => InitializeComponent(); 7 8 private void ButtonExecute_Click(object sender, RoutedEventArgs e) 9 { 10 // 未実装 11 } 12 13 private void TextBox_PreviewDragOver(object sender, DragEventArgs e) => e.Handled = e.Data.GetDataPresent(DataFormats.FileDrop); 14 private void TextBox_Drop(object sender, DragEventArgs e) 15 { 16 if (sender is TextBox textBox && e.Data.GetData(DataFormats.FileDrop) is string[] files && files.Count() == 1) 17 { 18 textBox.Text = files.Single(); 19 } 20 } 21}
###例外の出力
例外がスローされました: 'System.ArgumentException' (PresentationCore.dll の中)
回答1件
あなたの回答
tips
プレビュー