C# .Net 3.5 で、Windows エクスプローラーからのファイルのドラッグ アンド ドロップを WPF ウィンドウ/要素に検出させることは可能ですか? WinForms のソリューションは見つかりましたが、WPF のソリューションは見つかりませんでした。
15242 次
4 に答える
9
以下を試してください:
private void MessageTextBox_Drop(object sender, DragEventArgs e)
{
if (e.Data is DataObject && ((DataObject)e.Data).ContainsFileDropList())
{
foreach (string filePath in ((DataObject)e.Data).GetFileDropList())
{
// Processing here
}
}
}
private void MessageTextBox_PreviewDragEnter(object sender, DragEventArgs e)
{
var dropPossible = e.Data != null && ((DataObject)e.Data).ContainsFileDropList();
if (dropPossible)
{
e.Effects = DragDropEffects.Copy;
}
}
private void MessageTextBox_PreviewDragOver(object sender, DragEventArgs e)
{
e.Handled = true;
}
于 2011-04-22T12:14:55.723 に答える
6
残念ながら、TextBox、RichTextBox、および FlowDocument ビューアは常にドラッグ アンド ドロップ イベントを処理済みとしてマークするため、イベントがハンドラーにバブリングされません。ドラッグ アンド ドロップ イベントを強制的に処理し (UIElement.AddHandler を使用し、handledEventsToo を true に設定)、ハンドラーで e.Handled を false に設定することで、これらのコントロールによってインターセプトされているドラッグ アンド ドロップ イベントを復元できます。
于 2008-12-03T05:14:57.063 に答える
3
何らかの理由で TextBox にドロップできなかったことが判明しましたが、ボタンへのドロップは正常に機能します。私のウィンドウに 'AllowDrop="True"' を追加し、以下で構成されるボタンにドロップ イベント ハンドラーを追加することで、機能するようになりました。
private void btnFindType_Drop(object sender, DragEventArgs e)
{
if (e.Data is System.Windows.DataObject &&
((System.Windows.DataObject)e.Data).ContainsFileDropList())
{
foreach (string filePath in ((System.Windows.DataObject)e.Data).GetFileDropList())
{
// Processing here
}
}
}
于 2008-12-02T03:02:18.297 に答える
0
同様の問題がありました.ドロップイベントとドラッグエンターイベントが発生しませんでした。問題は、Windows のユーザー アカウント設定にありました。最も安全でない設定に設定し、動作するのと同じコードを試してください。
于 2012-03-22T08:34:45.293 に答える