Как да накарам Drag&Drop да работи?

Имам текстово поле на winform в Visual Studio. Искам да плъзгам и пускам файлове върху него. Ето какво направих:

public LangMerge()
{   InitializeComponent();
    this.AllowDrop = true;
    tbxFilepath.AllowDrop = true;
    tbxFilepath.DragDrop += new DragEventHandler(tbxFilepath_DragDrop);
    tbxFilepath.DragEnter += new DragEventHandler(tbxFilepath_DragEnter);
}
void tbxFilepath_DragDrop(object sender, DragEventArgs e)
{
    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
    foreach (string file in files) tbxFilepath.Text=(file);
}
void tbxFilepath_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy;
}

Нито ефектът на плъзгане, нито получаването на файла не работи. Няма съобщения за грешка или предупреждения. Какъв може да е проблема?

АКТУАЛИЗАЦИЯ: Вмъкнах точки на прекъсване в методите за обработка на събития и кодът не влиза в тях на първо място, без значение какво правя с курсора.


person Viktor    schedule 03.06.2016    source източник
comment
Работи добре. Кристалната топка казва, че бягате СРЕЩУ повишени. Така че програмата ви също работи с повишени права. Не можете да плъзгате от приложение без повишени права като Explorer в повишено. Рестартирайте VS и го стартирайте нормално.   -  person Hans Passant    schedule 03.06.2016
comment
Странно, защото не го стартирам като администратор. Как мога да го стартирам без повишени разрешения?   -  person Viktor    schedule 03.06.2016


Отговори (1)


Задали сте AllowDrop=true; и сте обработили DragDrop() и DragEnter() събития, но за приложението winforms трябва да обработите и TextBox.DragOver() събитие:

Нещо като това :

private void textBoxFile_DragOver(object sender, DragEventArgs e)
{
   if (e.Data.GetDataPresent(DataFormats.FileDrop))
     e.Effect = DragDropEffects.Copy;
   else
     e.Effect = DragDropEffects.None;
 }
person Pushpendra    schedule 03.06.2016
comment
Можете да опитате или да опитате тези 2 опции: Проверете повишените разрешения в свойствата на вашия проект или направете exe файл на вашето приложение и опитайте да плъзнете това. - person Pushpendra; 03.06.2016
comment
Може да приемете отговора, ако работи за вас. Може да помогне на другите. Благодаря! - person Pushpendra; 03.06.2016
comment
Благодаря ви, но кодът ми, както се оказа, беше наред. Проблемът е другаде. - person Viktor; 03.06.2016