파일을 WPF로 끌어서 놓기
내 WPF 응용 프로그램에 이미지 파일을 드롭해야합니다. 현재 파일을 놓을 때 이벤트가 발생하지만 다음에 어떻게해야할지 모르겠습니다. 이미지는 어떻게 얻습니까? 는 IS sender
객체는 이미지 또는 제어?
private void ImagePanel_Drop(object sender, DragEventArgs e)
{
//what next, dont know how to get the image object, can I get the file path here?
}
이것은 기본적으로 당신이 원하는 것입니다.
private void ImagePanel_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
// Note that you can have more than one file.
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
// Assuming you have one file that you care about, pass it off to whatever
// handling code you have defined.
HandleFileOpen(files[0]);
}
}
또한 실제로 XAML에서 이벤트를 연결하고 AllowDrop
특성 을 설정하는 것을 잊지 마십시오 .
<StackPanel Name="ImagePanel" Drop="ImagePanel_Drop" AllowDrop="true">
...
</StackPanel>
이미지 파일은 클래스e
의 인스턴스 인 매개 변수에 포함되어 있습니다. ( 매개 변수는 이벤트를 발생시킨 개체에 대한 참조를 포함합니다.)DragEventArgs
sender
특히 e.Data
회원을 확인하십시오 . 설명서에 설명 IDataObject
된대로 드래그 이벤트의 데이터를 포함하는 데이터 객체 ( )에 대한 참조를 반환합니다 .
IDataObject
인터페이스는 후있어하는 데이터 객체를 검색하기위한 방법을 제공합니다. 작업중인 데이터의 형식을 찾기 위해 GetFormats
메서드 를 호출하여 시작하는 것이 좋습니다. (예를 들어, 실제 이미지입니까 아니면 단순히 이미지 파일의 경로입니까?)
그런 다음 드래그되는 파일의 형식을 확인한 후 GetData
메서드 의 특정 오버로드 중 하나를 호출 하여 실제로 특정 형식의 데이터 개체를 검색합니다.
AR의 답변 외에도 TextBox
드롭 에 사용 하려면 다음 사항을 알아야합니다.
TextBox
에 대한 기본 처리가 이미있는 것 같습니다 DragAndDrop
. 데이터 개체가 String
이면 단순히 작동합니다. 다른 유형은 처리되지 않으며 금지 된 마우스 효과가 발생 하고 Drop 핸들러가 호출되지 않습니다.
당신이 당신의 자신의 처리를 활성화 할 수 있습니다 것 같아 e.Handled
에 진정한 A의 PreviewDragOver
이벤트 핸들러.
XAML
<TextBox AllowDrop="True" x:Name="RtbInputFile" HorizontalAlignment="Stretch" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" />
씨#
RtbInputFile.Drop += RtbInputFile_Drop;
RtbInputFile.PreviewDragOver += RtbInputFile_PreviewDragOver;
private void RtbInputFile_PreviewDragOver(object sender, DragEventArgs e)
{
e.Handled = true;
}
private void RtbInputFile_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
// Note that you can have more than one file.
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
var file = files[0];
HandleFile(file);
}
}
참고 URL : https://stackoverflow.com/questions/5662509/drag-and-drop-files-into-wpf
'developer tip' 카테고리의 다른 글
SmtpException : 전송 연결에서 데이터를 읽을 수 없음 : net_io_connectionclosed (0) | 2020.08.26 |
---|---|
Java에서 URL 확인 (0) | 2020.08.26 |
@Transactional (propagation = Propagation.REQUIRED) (0) | 2020.08.26 |
std :: set에 "contains"멤버 함수가없는 이유는 무엇입니까? (0) | 2020.08.26 |
Android 2.0에서 연락처를 읽는 방법 (0) | 2020.08.26 |