Я обновляю код, сделанный в VB 4, где у меня есть RichTextBox. Мне нужно иметь возможность перетаскивать изображение из проводника Windows в RTB. К сожалению, я не могу заставить drag-and-drop работать.Перетащите изображение в RichTextBox
Я создал гораздо более простую программу Windows Form, чтобы попытаться разрешить это, но не достиг прогресса. Я начинаю с установки AllowDrop на True.
Public Sub New()
InitializeComponent()
Me.DragAndDropTextBox.AllowDrop = True
End Sub
Затем я создаю обработчики для RTB. Они берутся непосредственно из MSDN.
Private Sub DragAndDropTextBox_DragEnter(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DragEventArgs) Handles DragAndDropTextBox.DragEnter
' Check the format of the data being dropped.
If (e.Data.GetDataPresent(DataFormats.FileDrop)) Then
' Display the copy cursor.
e.Effect = DragDropEffects.Copy
Else
' Display the no-drop cursor.
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub DragAndDropTextBox_DragDrop(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DragEventArgs) Handles DragAndDropTextBox.DragDrop
System.Windows.Forms.DragEventArgs) Handles DragAndDropTextBox.DragDrop
Dim img As Image
img = Image.FromFile(e.Data.GetData(DataFormats.FileDrop, False))
Clipboard.SetImage(img)
Me.DragAndDropTextBox.SelectionStart = 0
Me.DragAndDropTextBox.Paste()
End Sub
Когда я беру изображение в Проводнике и перетаскиваю его по моему окну, я получаю круг с косой чертой. Я поставил точки останова в первой строке каждого из обработчиков, и они никогда не достигаются. Я просмотрел несколько страниц, и все они, похоже, выполняют один и тот же процесс, поэтому я должен пропустить что-то простое.
Я сейчас не беспокоюсь о вставке изображения в текстовое поле; Я знаю, что мне нужно работать над этим. Я только пытаюсь захватить изображение, но методы обработчика, похоже, не вызываются.
UPDATE
После довольно много экспериментов, я обнаружил, что реальная проблема с моим Visual Studio 2010, который я всегда запускать от имени администратора. Когда я запускаю программу из exe, работает drag-and-drop. Когда я пытаюсь запустить VS в отладке, это не так. Кто-нибудь испытал это раньше?
Если бы кто-нибудь мог пролить свет на это, я был бы очень благодарен.
Ваш код в DragEnter только устанавливает его для принятия для 'DataFormats.Text'. Изображения не являются текстом – Plutonix
Когда вы перетаскиваете «изображение» из проводника Windows, на самом деле вы перетаскиваете только файл, содержащий изображение. Таким образом, ваш источник капель должен поддерживать падение файлов. И вы должны обработать файлы с потерями и загрузить изображения самостоятельно. –
Это хороший момент, и я должен был это понять. Я внес изменения в свой код, но мне все еще не повезло. Как я уже сказал, точка останова не достигнута, поэтому я предполагаю, что методы DragEnter и DragDrop никогда не вызываются. – Tim