我有一个用C#编写的WPF项目,旨在在Windows 10上运行。我希望能够将URL从浏览器拖放到WPF TextBox中,并检测何时将URL拖放到WPF TextBox中。
我已经能够通过文件资源管理器对文件执行此操作,但是我用于文件的相同拖放事件无法用于从浏览器中删除URL。当我释放拖动按钮时,URL文本被复制到WPF文本框中,但是当发生与拖放活动有关的事件时,我没有引发任何事件,就像我拖放被拖动文件时一样。
以下是我用于从文件资源管理器检测文件拖放的WPF事件,但未获得用于从浏览器删除URL的拖动事件:
private void InfoTextBox_DragOver(object sender, System.Windows.DragEventArgs e)
{
if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop))
e.Effects = System.Windows.DragDropEffects.Copy;
else
e.Effects = System.Windows.DragDropEffects.None;
e.Handled = true;
}
private void InfoTextBox_DragEnter(object sender, System.Windows.DragEventArgs e)
{
if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop))
e.Effects = System.Windows.DragDropEffects.Copy;
else
e.Effects = System.Windows.DragDropEffects.None;
e.Handled = true;
}
private void InfoTextBox_Drop(object sender, System.Windows.DragEventArgs e)
{
string[] filenames = (string[])e.Data.GetData(System.Windows.DataFormats.FileDrop);
InfoTextBox.Text = File.ReadAllText(filenames[0]);
}
以下是文本框的XAML:
<TextBox x:Name="InfoTextBox" Grid.Column="1" Grid.ColumnSpan="3"
Grid.Row="5" Grid.RowSpan="7"
AllowDrop="True" PreviewDragOver="InfoTextBox_PreviewDragOver"
DragEnter="InfoTextBox_DragEnter" Drop="InfoTextBox_Drop"
HorizontalAlignment="Stretch" Margin="5,0,-8,80" BorderBrush="PowderBlue"
BorderThickness="1" VerticalScrollBarVisibility="Auto"
TextWrapping="Wrap" AcceptsReturn="True"
Text="" VerticalAlignment="Stretch" DragOver="InfoTextBox_DragOver" />
我可以在WPF应用程序中添加什么,以便当我将URL从浏览器拖放到InfoTextBox时触发一个事件?我正在获取TextChanged事件,但这不是特定于拖放操作的事件,因为仅当有人在框中键入内容时,它也可以触发。作为最后的努力,我可以使用TextChanged事件,但想知道是否可以使用拖放操作完成该操作。
谢谢。