質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1823閲覧

ファイルドロップすると例外が投げられる

YamakawaJunichi

総合スコア630

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

1クリップ

投稿2018/06/15 02:03

編集2018/06/15 02:19

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 の中)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takabosoft

2018/06/15 02:12 編集

Visual Studioのバージョン、OSのバージョン、ドロップしているファイルが何かの記述をお願いします。また、ドロップするファイルの種類によって例外が出る出ないは変わりますか?
YamakawaJunichi

2018/06/15 02:20

ありがとうございます、環境とドロップしたファイルについて追記しました。
takabosoft

2018/06/15 02:23

追記ありがとうございます。手元のVS2015+Win10(64bit)で同等の事をやっても特に例外は出ないので不思議です(^_^;)
YamakawaJunichi

2018/06/15 02:35

試してくださりありがとうございます。うーん、VisualStudioが壊れているんでしょうか?プロジェクトを作り直してみてもダメでした。時間のあるときに再インストールを試したいと思います。
dodox86

2018/06/17 07:32 編集

回答には程遠いのでコメントのみですが、似たような環境、 Windows 7 Ultimate 64bit Visual Studio 2017 Pro. 15.7.3 .NET Framework 4.7.1  で試したところ、例外は出ませんでした。 プラットフォームはAny CPU, x86, x64 いずれも問題ありませんでした。 関係無いとは思いますが、 if (sender is TextBox textBox && e.Data.GetData(DataFormats.FileDrop) is string[] files && files.Count() == 1) のように、ifの一文で全て宣言と評価をしてしまうのではなく、分解してみたらいかがでしょう。
YamakawaJunichi

2018/06/19 00:23

試してくださりありがとうございます。VisualStudioの再インストールで直りました。
dodox86

2018/06/19 00:28

直ってよかったです。どこか壊れていたのですね。その旨表記して、自己解決で回答済みとしていただければと思います。
guest

回答1

0

自己解決

VisualStudioの再インストールで直りました。

別環境で試してくださった方々のおかげでVisualStudioが壊れていることに気付けました、ありがとうございました。

投稿2018/06/19 00:27

YamakawaJunichi

総合スコア630

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問