У меня есть приложение WPF, которое определяет, когда пользователь выполнил операцию перетаскивания из строки URL-адреса веб-браузера в текстовое поле WPF.Проблема, с которой я столкнулся, заключается в том, что после захвата события удаления текст URL из браузера вставляется в текстовый ящик WPF.
Я не хочу, чтобы это произошло, потому что, когда я захватил событие, я опускаю источник веб-страницы в WPF TextBox.После сброса текста WPF автоматически вставляет URL-адрес из URL-адреса браузера в TextBox, где в данный момент расположена мышь.
Результатом этого является то, что у меня есть источник веб-страницы в TextBox, а затем URL страницы вставляется где-то в загруженном содержимом страницы в зависимости от того, где расположена мышь.
Как можно предотвратить вставку текста URL, перетаскиваемого из браузера, в текстовое поле WPF после его удаления?
Ниже приведены события WPF, которые я использую:
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_PreviewDragOver(object sender, System.Windows.DragEventArgs e)
{
e.Handled = true;
}
private void InfoTextBox_PreviewDrop(object sender, System.Windows.DragEventArgs e)
{
string[] filenames = (string[])e.Data.GetData(System.Windows.DataFormats.FileDrop);
if (filenames != null)
{ //This is a drag drop for a file from File Explorer
InfoTextBox.Text = File.ReadAllText(filenames[0]);
}
else
{
string aUrl = (string)e.Data.GetData(System.Windows.DataFormats.StringFormat);
if (aUrl != null)
{ //This is a drag drop for a URL from the browser
WebClient myClient = new WebClient();
Stream response = myClient.OpenRead(aUrl);
// convert stream to string
StreamReader reader = new StreamReader(response);
string text = reader.ReadToEnd();
InfoTextBox.Text = text;
response.Close();
}
}
}
Ниже XAML для InfoTexTBox:
<TextBox x:Name="InfoTextBox" Grid.Column="1" Grid.ColumnSpan="3"
Grid.Row="5" Grid.RowSpan="7"
DragEnter="InfoTextBox_DragEnter"
PreviewDrop="InfoTextBox_PreviewDrop"
PreviewDragOver="InfoTextBox_PreviewDragOver"
HorizontalAlignment="Stretch" Margin="5,0,-8,80" BorderBrush="PowderBlue"
BorderThickness="1" VerticalScrollBarVisibility="Auto"
TextWrapping="Wrap" AcceptsReturn="True"
Text="" VerticalAlignment="Stretch" />
Заранее спасибо.