Windows 파일 탐색기에서 Windows 양식으로 드래그 앤 드롭이 작동하지 않습니다.

StackOverflow https://stackoverflow.com/questions/281706

문제

Windows 탐색기에서 Windows Forms 응용 프로그램으로 파일을 드래그하는 데 문제가 있습니다.

텍스트를 드래그 할 때 잘 작동하지만 어떤 이유로 든 파일을 인식하지 못합니다. 내 테스트 코드는 다음과 같습니다.

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_DragDrop(object sender, DragEventArgs e)
        {

        }

        private void Form1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.Text))
            {
                e.Effect = DragDropEffects.Copy;
            }
            else if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                e.Effect = DragDropEffects.Copy;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }
    }
}

allowdrop은 form1에서 true로 설정되었으며, 내가 언급했듯이 실제 파일이 아닌 양식으로 텍스트를 끌면 작동합니다.

Vista 64 비트를 사용하고 있습니다 ... 그것이 문제의 일부인지 확실하지 않습니다.

도움이 되었습니까?

해결책

문제는 Vista 's에서 나옵니다 UAC. DevStudio는 관리자로 실행 중이지만 Explorer는 일반 사용자로 실행 중입니다. Explorer에서 파일을 드래그하여 DevStudio 호스팅 응용 프로그램에 삭제하면 권한이없는 사용자와 통신하려는 불리한 사용자와 동일합니다. 허용되지 않습니다.

디버거 밖에서 앱을 실행할 때는 아마도 나타나지 않을 것입니다. 관리자로 실행하지 않는 한 (또는 Vista가 자동 감지하는 경우 설치자/설정 앱임을 알 수 있습니다).

당신도 할 수 있습니다 Explorer를 관리자로 실행하십시오, 적어도 테스트를 위해. 또는 UAC를 비활성화합니다 (배포 중에는 개발 중에 이러한 문제를 실제로 잡기를 원하기 때문에 권장하지 않을 것입니다!)

다른 팁

게시 한 코드 ~해야 한다 일하다.

Dragenter 방법의 시작 부분에 이것을 넣어보십시오.

string formats = string.Join( "\n", e.Data.GetFormats(false) );
MessageBox.Show( formats );

D 'ND 작업과 관련된 데이터 형식을 덤프합니다. 문제가있는 곳을 좁히는 데 도움이 될 수 있습니다.

나는 코드를 추가했다 아룰 언급하고 상황이 여전히 작동하지 않았지만 생각하게되었습니다.

나는 그것이 Vista 문제라고 생각하기 시작했기 때문에 Windows XP를 가진 친구에게 보냈고 훌륭하게 작동했습니다! 그런 다음 빈 디렉토리에서 릴리스 폴더 밖에서 실행하려고 시도했으며 그것이 효과가있는 것을 알고 있습니다!

그것이 작동하지 않는 유일한 시간은 내가 Visual Studio 2008 IDE 내에서 그것을 실행할 때입니다. 그것은 단지 이상합니다.

추가하려고 했습니까? STAThread 주요 방법에 속해?

  [STAThread]
  static void Main(string[] args)
  {
  }

@mattruma와 같은 문제가 있었음을 의미합니다. 추가 한 후 STAThread 예상대로 작동하는 주요 방법에 속합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top