파일을 WPF로 드래그 앤 드롭
이미지 파일을 WPF 응용 프로그램에 드롭해야 합니다.현재 파일을 드롭하면 이벤트가 발생하지만, 다음에 어떻게 해야 할지 모르겠습니다.이미지 입수 방법이요?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
parameter: 클래스의 인스턴스입니다.
(the.sender
파라미터에는 이벤트를 발생시킨 오브젝트에 대한 참조가 포함되어 있습니다.)
구체적으로 구성원을 확인합니다. 설명서에 설명된 대로 끌기 이벤트의 데이터를 포함하는 데이터 개체()IDataObject
에 대한 참조가 반환됩니다.
그IDataObject
interface에는 원하는 데이터 객체를 취득하기 위한 여러 가지 메서드가 있습니다.먼저 메서드를 호출하여 작업 중인 데이터의 형식을 확인하는 것이 좋습니다(예를 들어 실제 이미지인지 아니면 단순히 이미지 파일의 경로인지).
그런 다음 끌어오는 파일의 형식을 식별하면 특정 오버로드 중 하나를 호출합니다.GetData
특정 형식으로 데이터 개체를 실제로 가져오는 메서드입니다.
A.R.의 답변에 덧붙여, 만약 당신이 다음을 사용하고 싶다면,TextBox
떨어뜨리려면 다음 사항을 알아야 합니다.
TextBox
에 대한 디폴트 처리가 이미 되어 있는 것 같습니다.DragAndDrop
데이터 객체가 다음과 같은 경우String
간단하게 동작합니다.다른 유형은 처리되지 않고 금지 마우스 효과가 나타나며 드롭 핸들러가 호출되지 않습니다.
사용자 자신의 처리를 활성화 할 수 있을 것 같습니다.e.Handled
에 있어서 진실하다PreviewDragOver
이벤트 핸들러
XAML
<TextBox AllowDrop="True" x:Name="RtbInputFile" HorizontalAlignment="Stretch" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" />
C#
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
'programing' 카테고리의 다른 글
어레이가 IList를 구현하는 이유 (0) | 2023.04.15 |
---|---|
C# 리스트내림차순 (0) | 2023.04.15 |
데이터베이스에 대한 트랜잭션 로그가 가득 찼습니다. (0) | 2023.04.15 |
STL에서의 벡터 대 리스트 (0) | 2023.04.15 |
엔티티 프레임워크6 트랜잭션롤백 (0) | 2023.04.15 |