Как предотвратить вставку текста URL в текстовое поле WPF после перетаскивания из браузера - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть приложение 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"   />

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...