2014-09-30 2 views
-2

Я пытаюсь перетащить изображение из окна изображения в проводник Windows, но файл просто не копируется. Возможно, потому, что PictureBox находится в пользовательском контролере, кадр не работает? Временный файл успешно сохраняется.Перетащите изображение в проводник

private void _picBox_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
      var pic = (PictureBox) sender; 
      pic.Image.Save(@"tmp.jpg"); 
      var files = new string[] {@"tmp.jpg"}; 
      var res = pic.DoDragDrop(new DataObject(DataFormats.FileDrop, files), DragDropEffects.Copy | DragDropEffects.Move); 
      MessageBox.Show(res.ToString()); 
    } 
} 
+0

Вы отлажена приложение? –

+0

Можете ли вы рассказать о том, как ваш код «не работает»? Что вы ожидали, и что на самом деле произошло? Если вы получили исключение, опубликуйте строку, в которой она произошла, и сведения об исключении. – gunr2171

+0

У меня нет никакого исключения. Я написал это до pic.Image.Save ("tmp.jpg"); линия все в порядке. Я действительно не знаю, что произошло, это просто должно работать, и это не так. – santipianis

ответ

0

Он работает только с полными путями

private void _picBox_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
     var programFullPath = System.Reflection.Assembly.GetExecutingAssembly().Location; 
     var programDirectory = System.IO.Path.GetDirectoryName(programFullPath); 
     var pic = (PictureBox) sender; 
     pic.Image.Save(programDirectory+ @"\tmp.jpg"); 
     var files = new string[] {programDirectory+ @"\tmp.jpg"}; 
     var res = pic.DoDragDrop(new DataObject(DataFormats.FileDrop, files), DragDropEffects.Copy | DragDropEffects.Move); 
     MessageBox.Show(res.ToString()); 
    } 
} 
Смежные вопросы